0

我正在使用 jquery验证插件。当我使用 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" }不起作用。

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

4

2 回答 2

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")
                    }
                }
            }
        }
    });

});

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

于 2013-04-02T04:15:00.573 回答
0

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

于 2013-04-02T03:51:23.363 回答