我如何将以下内容放入for循环中

时间:2012-03-14 00:44:07

标签: javascript jquery html forms

我想将以下内容放入for循环中,但我遇到了困难。任何帮助将不胜感激

 $("input:submit").click(function(){  
         if (!$("input[name=attendance1]").is(":checked")) {
            alert('Please select preference');
            return false;
            }
       else if (!$("input[name=attendance2]").is(":checked")) {
            alert('Please select preference');
            return false;
                }
        else if (!$("input[name=attendance3]").is(":checked")) {
            alert('Please select preference');
            return false;
        }

        });


});

我试过了:

for($i=1; $i<=3; $i++)
                 {
$("input:submit").click(function(){  
             if (!$("#food" + $i).is(":checked")) {
                alert('Please select preference');
                return false;
                }

            });         

    });

4 个答案:

答案 0 :(得分:2)

首先修复:

alert('Please select preference);

alert('Please select preference');

然后如果你想循环:

for (var i = 0; i < 3; i++) {
    if (!$("input[name=attendance" + i + "]").is(":checked")) {
            alert('Please select preference');
            return false;
    }
}

<小时/> 或者更好的是使用jQuery的startsWith选择器:

if (!$('input[name^="attendance"]').is(":checked")) {
            alert('Please select preference');
            return false;
}

Example

答案 1 :(得分:0)

你错过了所有3个警告声明的结束单引号。

答案 2 :(得分:0)

这是我的看法。它的优点是可以在数组中列出要检查的名称,无论它们是什么名称

//jQuery '.on()' for versions 1.7+
$("input:submit").on('click', function() {

    //assume valid unless found otherwise
    var valid = true;

    //add the input names you want to verify
    var nameList = [
        'attendance1',
        'attendance2',
        'attendance3'
    ];

    //loop through names
    for (var i = 0; i < nameList.length; i++) {
        var checked = $('input[name="'+nameList[i]+'"]').is(':checked');
        if (!checked) {
            alert('Please select a preference');

            //mark false when something wrong found
            valid = false;
        }
    }

    //check if validity persisted
    if(valid){
        //do something
    }

    //prevent default actions
    return false;
});​

答案 3 :(得分:0)

当我想做这样的事情时,我通常在我的DOM元素上使用类名。这使得使用.each()更容易迭代元素。我不知道上面提到的startsWith选择器,但它看起来比我的方法更清晰。

<!-- DO STUFF -->

    <input name="attendance1" class="my-unique-class-name" />
    <input name="attendance2" class="my-unique-class-name" />
    <input name="attendance3" class="my-unique-class-name" />

<!-- DO STUFF -->

<script type="text/javascript">
    $("input:submit").click(function(){
        var valid = true;
        $("input.my-unique-class-name").each(function (el) {
            if ( ! $(el).is(":checked") ) {
                valid = false;
            }
        });
        if ( ! valid ) {
            alert('Please select preference');
            return false;
        }
    });
</script>