【问题标题】:How to add a Not Equal To rule in jQuery.validation如何在 jQuery.validation 中添加不等于规则
【发布时间】:2011-04-04 00:51:18
【问题描述】:

我想知道如何制定它,以便我可以制定一个字段不等于值的规则。就像我有一个名为 'name' 的字段,所以我不想要 'name' = 'Your Name'。

有人知道如何做到这一点吗? 感谢您的帮助。

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    您可以使用自定义方法,如下所示:

    jQuery.validator.addMethod("notEqual", function(value, element, param) {
      return this.optional(element) || value != param;
    }, "Please specify a different (non-default) value");
    

    然后像这样使用它:

    $("form").validate({
      rules: {
        nameField: { notEqual: "Your Name" }
      }
    });
    

    将其添加为这样的规则使其更具可扩展性,因此您可以使用它与其他字段中的默认值进行比较。

    【讨论】:

    • 是否有机会使其不区分大小写?
    • @compguy24 那是return this.optional(element) || value.toLowerCase() != param.toLowerCase();addMethod
    • 感谢您的解释!直到今天我才明白它是如何工作的!干杯!
    • 也可以自定义发送消息吗?
    【解决方案2】:

    尼克的回答符合要求。我需要比较表单上的两个字段并确保它们不相等。我稍微修改了一下。

    jQuery.validator.addMethod("notEqual", function(value, element, param) {
     return this.optional(element) || value != $(param).val();
    }, "This has to be different...");
    
    $("#cform").validate(
    {
        rules: {
            referringsales: { required: false, notEqual: "#salesperson" }
        }
    });
    

    编辑回答评论:

    如果您要比较多组下拉菜单,该方法也适用于这种情况。

    jQuery.validator.addMethod("notEqual", function(value, element, param) {
     return this.optional(element) || value != $(param).val();
    }, "This has to be different...");
    
    $("#cform").validate(
    {
        rules: {
            referringsales: { required: false, notEqual: "#salesperson" }
            DropDown2: { required: false, notEqual: "#SecondBase" }
        }
    });
    

    如果问题是关于将引用销售与 2 个不同的基准(例如 #initialContact 和 #salesperson)进行比较,那么只需将该规则添加到列表中即可。

    referringsales: { required: false, notEqual: "#salesperson", notEqual: "#initialContact" }
    

    【讨论】:

    • Sam 的评论:“@Frank Luke:如果我有 2 个不同的下拉菜单怎么办?”
    • @PeterO.,第二个下拉菜单有自己的规则。像这样: secondDropDown: { required: false, notEqual: "#secondBase" } 第二个碱基可以是第一个碱基或不同的碱基。 notEqual 方法检查引用的那个。还是您的意思是您必须将一个值与 2 个不同的下拉菜单进行比较?
    • 这不是我的评论。我只是在此处添加它,因为它的作者将其写为答案而不是评论。因此,您应该修改此答案以回复评论。
    【解决方案3】:

    我提出一个多值函数...

    jQuery.validator.addMethod("notEqualTo",
    function(value, element, param) {
        var notEqual = true;
        value = $.trim(value);
        for (i = 0; i < param.length; i++) {
            if (value == $.trim($(param[i]).val())) { notEqual = false; }
        }
        return this.optional(element) || notEqual;
    },
    "Please enter a diferent value."
    );
    

    我称之为...

    $("#abm-form").validate({
    debug: true,
    rules: {
        password1: {
            required: true,
            minlength: 10,
            notEqualTo: ['#lastname', '#firstname', '#email']
        },
        password2: {
            equalTo: '#password1'
        }
    }
    });
    

    这对我有用!

    【讨论】:

      【解决方案4】:

      下载包的additional-methods.js中有一个叫“notEqualTo”:

      https://github.com/jzaefferer/jquery-validation/blob/master/src/additional/notEqualTo.js

      【讨论】:

        【解决方案5】:

        不确定您是否得到了答案,但是:

        返回 this.optional(element) ||价值 != 参数;

        如果值是可变的,则不起作用。

        需要阅读:

        返回 this.optional(element) ||价值 != $(param).val();

        干杯

        【讨论】:

          【解决方案6】:

          在这里举了一些很好的例子,我写了另一个版本,它可以与多个字段一起检查

          /*=====================================================*/
          /* Jquery Valiation addMethod*/
          /* Usage:  password: {notEqualTo: ['#lastname', '#firstname', '#email']} */
          /*====================================================*/
          jQuery.validator.addMethod("notEqualTo",
              function (value, element, param) {
                  var notEqual = true;
                  value = $.trim(value);
                  for (i = 0; i < param.length; i++) {
          
                      var checkElement = $(param[i]);
                      var success = !$.validator.methods.equalTo.call(this, value, element, checkElement);
                      // console.log('success', success);
                      if(!success)
                          notEqual = success;
                  }
          
                  return this.optional(element) || notEqual;
              },
              "Please enter a diferent value."
          );
          /*=====================================================*/
          /*=====================================================*/
          

          用法

              $("form").validate(
                  {
                      rules: {
                          passwordNewConfirm: {equalTo: "#passwordNew"},
                          passwordNew: { notEqualTo: "#password" },
                          password: { notEqualTo: ['#passwordNew', '#passwordNewConfirm'] }
                      },
                  });
          

          【讨论】:

            【解决方案7】:

            如果您希望它不像您的问题所暗示的那样只有一个值,您可以很容易地检查它,而无需任何外部插件。

            $('#yourForm').submit(function(e) {
                if ( $('input[name="yourField"]').val()=='Your Name' )
                    e.preventDefault();
                    alert("Your message here");
                }
            });
            

            【讨论】:

            • 是的,但问题是“如何在 jQuery.validation 中添加不等于规则”你可以回复这个。这是另一种情况
            【解决方案8】:

            非常感谢,尼克!一点补充:如果你有几个字段要验证到 validate() 函数中,语法应该是:

            self.logo.rules(
                'add', {
                   notEqual: "Select the Logo"
                 }
            );
            

            【讨论】:

              【解决方案9】:

              感谢@Nick Craver♦ 的回答,但在我的工作环境中,它需要稍作修改才能工作。

               $.validator.addMethod("notEqualTo", function(value, element, param) {
                     return this.optional(element) || value != $(param).val();
               }, 'This two elements are the same, please change it.');
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-01-06
                • 2018-09-22
                • 1970-01-01
                • 2020-11-20
                • 2011-11-10
                • 2018-05-09
                • 2013-11-11
                相关资源
                最近更新 更多