在验证单选按钮时,event.preventDefault不起作用

时间:2014-04-01 20:50:29

标签: javascript jquery validation preventdefault

我正在尝试验证是否已选中所有项目(单选按钮)。以下代码有效,但只要我点击警报窗口,它就会再次弹出。使用event.stopPropagation()不会改变任何内容。它不是在等待用户检查剩余的项目。

$(document).ready(function(){
        $(document).on('submit','#formular',function(event){
            $("input:radio").each(function() {
                var val = $('input:radio[name=' + this.name + ']:checked').val();
                if (val === undefined) {
                    alert("Not every item answered");
                    event.preventDefault();
                    }
                });
            });
        });

1 个答案:

答案 0 :(得分:1)

您不使用preventDefault退出循环,通常您会使用breakcontinue,但在jQuery $.each上您必须使用return true继续return false相当于break

    $(document).ready(function(){
        $(document).on('submit','#formular',function(event){
            $("input:radio").each(function() {
                var val = $('input:radio[name=' + this.name + ']:checked').val();
                if (val === undefined) {
                    alert("Not every item answered");
                    return false;
                }
            });
            // When invalid formular:
            return false;
            // When it's valid:
            return true;
        });
    });

另请参阅此问题:jquery validation: prevent form submit

请参阅:

How to break out of jQuery each Loop

How to break/exit from a each() function in JQuery?

https://api.jquery.com/each/