0

我正在构建一个小 js 问答游戏。使用下面的代码,用户选择一个答案,然后必须单击答案按钮提交,这会检查答案是否正确。换句话说,有两个步骤。首先,选择。第二,提交。我想知道是否有办法消除第二步,以便在选择时触发事件。

如有必要,这是一个小提琴。

http://jsfiddle.net/mjmitche/D5H9z/

我想我不知道如何为所有启动检查的选择框创建一个通用事件,但与此同时,能够检查选择是否正确,如果这有意义的话。

请注意,游戏最终将使用诸如下划线模板之类的东西来在字段中插入问题和答案选项,因此如果这会影响您的设置方式,请考虑到这一点。

先感谢您

html

 <fieldset id="question1">
        <legend>What is the answer to this question?</legend>
        <label><input type="radio" name="q1" value="right"> Right answer</label>
        <label><input type="radio" name="q1" value="wrong"> Wrong answer</label>
            <ul>

    </fieldset>

            <input type="button" id="answer">

js

 document.getElementById("answer").onclick = validate;
    function validate() {
            var radios;
            var i;
            var right;
            radios = document.getElementById("question1").getElementsByTagName("input");

            right = false;
            for(i = 0; i < radios.length; i++) {
                    if(radios[i].value == "right" && radios[i].checked == true) {
                          right = true;
                    }
            }

            if(right) {
                    alert("You answered correctly");
            } else {
                    alert("Wrong answer");
            }
    }

更新,游戏的最终版本将使用 Backbone,它支持这样的事件

events:{ 'click #sayhello': 'validate'
    },

这个问题的前两个答案提出了一个“内联”解决方案,但我希望有一些适合主干事件处理的东西。#sayhello为了触发此代码中的验证功能,我将用什么替换。

4

2 回答 2

0

onclick处理程序应用于每个单选按钮:

<input type="radio" name="q1" value="right" onclick="validate">

在这里摆弄

于 2013-01-31T21:34:56.700 回答
-1

试试这个:

<fieldset id="question1">
    <legend>What is the answer to this question?</legend>
    <label><input type="radio" name="q1" value="right" onclick="javascript:check('right')"/> Right answer</label>
    <label><input type="radio" name="q1" value="wrong" onclick="javascript:check('wrong')"/> Wrong answer</label>


<script>
    function check(answer){
        alert(answer+" answer");
    }

</script>

http://jsfiddle.net/D5H9z/3/

于 2013-01-31T21:53:08.137 回答