【问题标题】:jQuery required( dependency-expression ) is not working properly所需的 jQuery(依赖表达式)无法正常工作
【发布时间】:2013-03-23 05:51:31
【问题描述】:

我正在使用 jquery validation 插件。当我使用 required(dependency-expression) 我注意到 required( dependency-expression ) 无法正常工作。如前所述,我尝试过

$("#flight_availability").validate({
    rules: { 
       Trip: { required: true },
       DepartDate: { required : "#OneTrip:checked" },
       Origin: { required:"#OriginId:blank" }
    },
});

在上面提到的代码中,代码DepartDate: { required : "#OneTrip:checked" }, 工作正常,但Origin: { required:"#OriginId:blank" } 不起作用。

代码有什么问题?我用萤火虫。它没有显示任何错误。甚至也使用了验证调试选项,但是:(

【问题讨论】:

  • 你能也分享一下标记吗
  • 它似乎工作正常jsfiddle.net/arunpjohny/F9PFP/2
  • 你能分享OriginIdOrigin的html
  • 这就是规则所说的,它说如果OriginId 是空白Origin 是必需的。并不是说如果OriginId 为空,则应留空
  • 什么东西这么难理解?您的规则是,当#OriginId 字段为空时,需要 Origin 字段。这不是你想要的吗?

标签: javascript jquery jquery-plugins jquery-validate


【解决方案1】:

根据 OP 的 cmets:

“即使 OriginId 为空(空白),它也会验证它为真”

是的,这正是你的编程方式。

Origin: {
    required: "#OriginId:blank"
}

上面的代码是说Origin字段只有required#OriginId字段留空时。使用#OriginId:filled,此逻辑表示如果#OriginId 已填写,则Origin 字段必须保持为空。如果这不完全正确,则可以改用:blank 选择器。

http://jsfiddle.net/xMAs5/

如果您想要相反的行为,请改用:filled 选择器。

Origin: {
    required: "#OriginId:filled"
}

http://jsfiddle.net/xMAs5/1/


否则,这是一个使用名为 empty 的自定义方法的演示,该方法根据您的评论起作用:“因此,如果 OriginId 为空,则意味着 Origin 值(任何内容)均无效。”

$(document).ready(function () {

    $.validator.addMethod('empty', function (value, element) {
        return (value === '');
    }, "This field must remain empty!");

    $("#flight_availability").validate({
        rules: {
            Trip: {
                required: true
            },
            DepartDate: {
                required: "#OneTrip:checked"
            },
            Origin: {
                empty: {
                    depends: function (element) {
                        return $("#OriginId").is(":blank")
                    }
                }
            }
        }
    });

});

演示:http://jsfiddle.net/Ab8bT/

【讨论】:

  • 我想我们希望只有在输入 OriginId 时才输入 Origin
  • 规则中有一个小错误与检查依赖规则jsfiddle.net/arunpjohny/xMAs5/3
  • @ArunPJohny,是的,我一直在摆弄,但最终让它工作了。必须使用depends 子规则和.is(':blank')。我也喜欢你的版本,它似乎也可以工作。
【解决方案2】:

可能是 jQuery puesdo 选择器尝试使用 :empty 而不是 :blank。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多