所需的 jQuery(依赖表达式)无法正常工作
Posted
技术标签:
【中文标题】所需的 jQuery(依赖表达式)无法正常工作【英文标题】:jQuery required( dependency-expression ) is not working properly 【发布时间】: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 你能分享OriginId
和Origin
的html
这就是规则所说的,它说如果OriginId
是空白Origin
是必需的。并不是说如果OriginId
为空,则应留空
什么东西这么难理解?您的规则是,当#OriginId
字段为空时,仅需要 Origin
字段。这不是你想要的吗?
【参考方案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。
【讨论】:
Sam,请参阅文档。:blank
是一个完全有效的选择器:docs.jquery.com/Plugins/Validation#Custom_selectors以上是关于所需的 jQuery(依赖表达式)无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Apple iOS ARKit:“传感器无法提供所需的输入”错误并停止工作