0

さまざまなフォーム要素 (ラジオ、テキスト、選択) で構成され、PHP で動的に作成されるフォームがあります。ただし、質問の種類に基づいて JQuery でこのフォームを検証しようとしています。私の質問の名前はq1、q2、.....

$(function(){
        if ($('form').length > 0) {
            $('form').submit(function(e){
        var len = <?php echo $numRows; ?>; // refers to the number of rows in questions table of a database
        for (var i = 1; i <= len; i++ ) {
            var qNum = 'q'+i;
            //document.write(qNum);
            if (($('input[name=' + qNum + ']:checked').length == 0) )
            {
                if ($('input[type=Radio][name=' + qNum + ']')) {
                    alert("No Selection is made for "+ qNum);
                    return false;
                }

            }
        }           
            }); // form submit function

        }// form.length
    })//function

上記のコードは、ラジオ ボタンを効率的に処理します。ただし、ラジオ以外の質問に関しては、そのラジオ以外の質問に対する警告メッセージが表示されます。とにかく、質問の種類に基づいてこれを異なる方法で処理しますか?

4

1 に答える 1

0
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
    $(function(){
        if ($('form').length > 0) {
            $('form').submit(function(e){
                var answers = '';
                //alert (qNum);
        var i = 1;
        var len = <?php echo $numRows; ?>;
                $('input[type=Radio]:checked').each(function() {
                    if (answers !== '') {
                        answers += ',';
                    }
                    answers += $(this).val();
            //alert(answers);
                })
                $('input[name=h2]').val(answers);       
        for (var i = 1; i <= len; i++ ) {
            var qNum = 'q'+i;
            //document.write(qNum);
            if (($('input[name='+qNum+']:checked').length == 0) )
            {
                if ($('#'+qNum+'').is(':radio')) {
                    alert("No Selection is made for "+ qNum);
                    return false;
                }
            }
        }           
            }); // form submit function

        }// form.length
    })//function
于 2013-08-05T05:09:27.003 に答える