-2

このコードを取得しました

    <?php foreach($this->question as $question): ?>
<div class="question">
    <?php echo $question['question'] ?>          </div>


<?php if($this->activeEdition["id"]!=20) { ?>

<div class="answers">
    <?php
    $i = 1;
    foreach($question['answers'] as $answer):
    ?>
    <input type="radio" name="question[<?php echo $question['id'] ?>]" value="<?php echo $answer['id'] ?>" id="<?php echo
           $answer['id']
    ?>" class="radio_answer radio_answer_<?php echo $i; ?>" >
    <label for="<?php echo $answer['id'] ?>"><?php echo $answer['answer'] ?></label>
    <?php
    if(count($question['answers']) > 3){
    echo '<br/>';
    }
    ?>
<?php
$i++;
endforeach;
?>
</div>

すべての質問で1つのラジオボタンがチェックされている場合、JavaScriptで最も簡単で簡単な方法でチェックする方法は?

4

2 に答える 2

0

すべての回答が必要な場合は、生成時にすべての回答で最初のラジオを選択済みに設定する必要があります。それが最も簡単な方法です。

もちろんJSで確認できますが、見苦しいでしょう。デモコードは次のとおりです。

<script>
    function check(){
        var inputs = document.getElementsByTagName('input');
        var names = [];
        var checked = 0;

        for(var i=0;i<inputs.length;i++){
            if(inputs[i].type=='radio'){
                inArray = false;
                for(var j=0;j<names.length;j++){
                    if(names[j]==inputs[i].name){
                        inArray = true;
                        break;
                    }
                }
                if(!inArray){
                    names.push(inputs[i].name);
                }
                if(inputs[i].checked){
                    checked++;
                }
            }
        }

        return names.length==checked;
    }
</script>
<input type="radio" name="a">
<input type="radio" name="a"><br/>
<input type="radio" name="b">
<input type="radio" name="b"><br/>
<input type="radio" name="b">
<input type="radio" name="c">
<input type="radio" name="c"><br/>
<input type="radio" name="d">
<input type="radio" name="d">
<input type="radio" name="d">
<input type="button" onClick="alert(check());">

質問の数がわかっている場合は、単純化できます。in_array をチェックするためのより良い解決策があるかもしれません。

jQuery を使用すると、さらに便利になります。

于 2012-08-30T10:44:27.203 に答える
0

わかりましたjQueryを使用してより良い解決策を行いました

<script type="text/javascript">
function checkform()
{
    var ilosc = document.getElementsByClassName('question');
    var n = $("input:checked").length;
    if (n != ilosc.length)
    {
    alert('Proszę zaznaczyć wszyskie odpowiedzi');

    return false;
    }else return true;

}
</script>
于 2012-08-30T13:43:41.673 に答える