与Jquery Validate插件的依赖性不匹配

时间:2009-11-19 18:02:54

标签: jquery jquery-validate

我对Jquery很新,我对我的文本框使用验证规则。问题是当我标记文本框是强制性的时,用户不输入任何值,那么它不会显示任何验证消息。我已经为文本框关联了另一个验证消息,因为值shu在范围内,并且当用户提供任何输入时它都有效。

$.validator.addMethod("requiredRangeFunction", function(value, element) {debugger
            $.validator.messages["requiredRangeFunction"] = 
    jQuery.format(
      $(element).attr('ErrorMessage') ? $(element).attr('ErrorMessage') : "Please enter the value between {0} and {1}",
      $(element).attr('MinValue'), 
      $(element).attr('MaxValue')
     );

    return  this.optional(element) || ((value > Number($(element).attr('MinValue')) && (value < Number($(element).attr('MaxValue')))));
}, "Please enter valid value.");

问题是this.optional(element)在用户没有提供任何输入时返回依赖项不匹配。

我的文本框也可以是可选的,所以我需要调用this.optional(element)

4 个答案:

答案 0 :(得分:3)

测试(this.optional(element)== true)对我有用。

所以在你的情况下,它将是:

return  (this.optional(element) == true) || ((value > Number($(element).attr('MinValue')) && (value < Number($(element).attr('MaxValue')))));

答案 1 :(得分:1)

(与Nav的解决方案相反)

return (this.optional(element) != false) || test;

这肯定有效。

答案 2 :(得分:0)

可选表示用户无需提供任何输入。如果没有输入,则无需进行验证。

答案 3 :(得分:0)

您可以替换

return this.optional(element) || <test condition>

通过

var r = $(element).rules();
var req=(this.objectLength(r))?r.required:false;
return !req || <test condition>;

可能会是恩惠:

var req=r.required; // true, false or undefined.

假设undefined与我们需要的false相同。