jQuery required(dependency-expression)无法正常工作

时间:2013-04-02 03:29:44

标签: javascript jquery jquery-plugins jquery-validate

我正在使用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" }不起作用。

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

2 个答案:

答案 0 :(得分:2)

根据OP的评论:

  

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

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

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

上面的代码表示,当Origin字段留空时,required字段仅为#OriginId。使用#OriginId:filled,此逻辑表示如果填写Origin,则#OriginId字段必须为空。如果这不完全正确,则可以使用: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")
                    }
                }
            }
        }
    });

});

DEMO:http://jsfiddle.net/Ab8bT/

答案 1 :(得分:0)

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