所需的 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 你能分享OriginIdOriginhtml 这就是规则所说的,它说如果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(依赖表达式)无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

MVC模式下Web开发项目所需的jar包在哪里找?

Apple iOS ARKit:“传感器无法提供所需的输入”错误并停止工作

使用 Vim 的正则表达式替换多个文件的单词在 sed 中无法按预期工作

Python:正则表达式与所需的相反[重复]

Perl 正则表达式变量替换打印 1 而不是所需的提取

c_cpp 使表达式平衡所需的最小括号反转次数