【问题标题】:jQuery Validate custom rule for comparing two properties not equal by ID [duplicate]jQuery Validate 自定义规则,用于比较 ID 不相等的两个属性 [重复]
【发布时间】:2017-06-21 06:46:06
【问题描述】:

我需要使用 jQuery Validate 的自定义规则来比较表单的两个输入文本字段。

我尝试了以下代码

//Our validation script will go here.

$(document).ready(function(){
     //custom validation rule - text only
     $.validator.addMethod("NotEqualTo", 
             function(value, element) {
                 return ???;
             }, "Two Properties are matching"
    );

    $("#frmUpdatePassword").validate({
        onfocusout: true,
        rules: {
            NewPassword: {
                NotEqualTo: '#OldPassword'                }
        },
        messages: {
            NewPassword: {
                NotEqualTo: "Two Properties are having same values"
            }
        }
    });
});

HTML TextBox

<input type="password" id="OldPassword" name="OldPassword" />
<input type="password" id="NewPassword" name="NewPassword" />

请帮助我如何以通用方式比较不等于两个属性,而不仅仅是比较这两个字段。

【问题讨论】:

  • @DarrenSweeney 这里我将传递属性 ID 而不是值...

标签: jquery jquery-validate


【解决方案1】:

自定义验证规则应该是

$.validator.addMethod('NotEqualTo', function (value, element, param) {

       var str1 = value  || '';
       var str2 = $(param).val() || '';

       return $.trim(str1) != $.trim(str2);

}, 'Invalid: Two values are matching');

规则应该是

rules: {
    NewPassword: {
        NotEqualTo: '#OldPassword'
    }
}

【讨论】:

  • 我收到一个错误TypeError: settings[eventType].call is not a function
  • @Mastero,你永远不应该设置onfocusout: true。阅读文档,“true 不是有效值”,可能会破坏内置功能。如果您想启用onfocusout,只需忽略此选项即可,这已经是默认设置了。这是您的错误的根源。
【解决方案2】:

请试试这个,我遇到了同样的问题并通过下面提到的代码解决。

//Our validation script will go here.
$(document).ready(function(){
     //custom validation rule - text only
     $.validator.addMethod("NotEqualTo", function(value, element) {

        var OldPassword = $("#OldPassword").val() || null;

        if(value == OldPassword)
        {
            return true; //Error fire!
        }
        else
        {
            return false; //Error Not fire!
        }
     }, "Two Properties are matching");

    $("#frmUpdatePassword").validate({
        onfocusout: true,
        rules: {
            NewPassword: {
                NotEqualTo: true;
            }
        },
        messages: {
            NewPassword: {
                NotEqualTo: "Two Properties are having same values"
            }
        }
    });
});

您的所有代码都很好!只需更新验证方法。

【讨论】:

猜你喜欢
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多