【问题标题】:jQuery if not in function submit doesn't work anymorejQuery 如果不在函数中,则提交不再起作用
【发布时间】:2014-01-03 21:39:34
【问题描述】:

我在我的项目中处理表单简单验证。我使用 validate="true" 检查所有字段,并检查一组具有一个额外功能的单选按钮。

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

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

我已尝试更改 ! 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;   
    }

}); 

【问题讨论】:

  • 你的wz_validation函数有一些重大的逻辑缺陷。
  • 好的,但是这个函数可以正常工作。后来添加了 wz_radio_shipping ,这给了问题。

标签: jquery validation


【解决方案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();
    });
});

【讨论】:

  • 感谢您的编辑!只有 wz_radio_shipping 功能不起作用。
  • 我有一个额外的函数叫做 wz_val_select(),在最后一个提交函数中添加了这个,也不再起作用了。
  • 尝试仅通过“&&”逻辑运算符中的更正来恢复您的原始功能。
  • 奇怪.. 使用 && 我的功能不起作用,使用 & 他们工作??
  • 如果我使用单个“&”,您的脚本可以工作,它会添加类但它总是提交。如果我使用双“&&”只有第一个函数有效,当你不填写字段时它不会提交..
猜你喜欢
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多