如果不在函数提交中jQuery不再起作用

时间:2013-12-16 13:17:32

标签: jquery validation

我在项目中进行表单简单验证。我用validate =“true”检查所有字段,并检查一组带有一个额外功能的单选按钮。

首先你看到带有validate =“true”的文本字段的函数,然后是单选按钮的函数wz_radio_shipping,然后我检查两个函数,并为表单提交返回false。

在函数wz_radio_shipping中我使用了!在if语句中。通过这样做de单选按钮成功检查,如果它们是空的,但我的表单不能再提交。如果我删除了!单选按钮检查不再起作用,但我的表单现在可以提交了。

我试过改变了! to ==“”但这不起作用。

有人可以帮我这个吗?

$(wz_form).submit(function() {

    function wz_validation() {
        var value=false;
        var txtboxes=$('input[validate="true"]');
        for(var i=0;i<txtboxes.length;i++) {

            if($(txtboxes[i]).val()=="") {
                $(txtboxes[i]).addClass('red_border');
                value=false;
            }
            else{
                $(txtboxes[i]).removeClass('red_border');
                value=true;
            }
        }
        return value;
    }


    function wz_radio_shipping() {
        if($("#shipping_form")) {
            if(!$('input[name=wz_shipping]:checked', '#shipping_form').val()) {
                $("#checkout_shipping").addClass('red_border');
                return false;   
            }
            else{
                $("#checkout_shipping").removeClass('red_border');
                return true;    
            }
        }
    }

    if(wz_validation() & wz_radio_shipping()) {
        return true;    
    }
    else{
        return false;   
    }

}); 

1 个答案:

答案 0 :(得分:1)

你的主要问题在于:

if(wz_validation() & wz_radio_shipping()) { // <-- notice single "&"

它应该是:

if(wz_validation() && wz_radio_shipping()) { // <-- now is double "&"

尝试此优化解决方案:

$(function() {
    function wz_validation() {
        var ok = true;

        $('input[validate="true"]').each(function() {
            if($(this).val() == '') {
                ok = false;
                $(this).addClass('red_border');
            }
            else $(this).removeClass('red_border');
        });

        return ok;
    }

    function wz_radio_shipping() {
        var form = $("#shipping_form");
        if(form.length) {
            if(form.find('input[name=wz_shipping]:checked').length == 0) {
                $("#checkout_shipping").addClass('red_border');
                return false;   
            }
            else{
                $("#checkout_shipping").removeClass('red_border');
                return true;    
            }
        }
    }

    $(wz_form).submit(function() {
        return wz_validation() && wz_radio_shipping();
    });
});