【问题标题】:jQuery validation ignores placeholder!jQuery 验证忽略占位符!
【发布时间】:2011-07-09 20:15:12
【问题描述】:

我正在使用 jQuery 验证插件来验证我的表单,但它似乎忽略了具有占位符文本的必填字段。

如何解决?

要在所有浏览器中显示占位符,我正在使用这个 jQuery 插件 - http://formalize.me/

为了验证我的表单,我使用了这段代码:

$("#userRegistration").validate({
errorLabelContainer: "#messageBox",
wrapper: "li",
rules: {
    password: "required",
    password_again: {
    equalTo: "#password"
    }
  }
});

【问题讨论】:

标签: jquery validation placeholder


【解决方案1】:

在 validate.js 中找到如下函数 必需:函数(a,b,d)


然后将整个函数替换为以下内容:

required:function(a,b,d){if(!this.depend(d,b))return"dependency-mismatch";switch(b.nodeName.toLowerCase()){case "select":return(a=c(b).val())&&a.length>0;case "input":if(this.checkable(b))return this.getLength(a,b)>0; /*default:return c.trim(a).length>0*/ default: if(typeof $.trim($(b).attr("placeholder")) != 'undefined') { return a != $.trim($(b).data("placeholder"))} else {return c.trim(a).length>0};}}

【讨论】:

    【解决方案2】:

    我在使用不同的插件 simpleWatermark 时遇到了同样的问题。但是为了这个问题上网,我在这个页面上找到了解决方案Watermark plugin for jQuery

    问题在于事件的 jquery 链接。解决方案是在附加验证之前设置代码以附加水印。

    希望这对其他人有所帮助。

    【讨论】:

      【解决方案3】:

      您可以将此语句绑定到您的提交事件。要么通过 jQuery 验证,要么手动进行。 (伪代码,您需要添加您的值)。

      if(element.val() == placeholderText){
                    element.val('');
       } 
      

      【讨论】:

        【解决方案4】:

        这是未经测试的,但您可以尝试将所需的验证器更改为以下内容:

        password:  {
          required: function(element) {
            return $(element).val() != $(element).attr("placeholder");
          }
        }
        

        如果这不是很准确,它应该为您指明正确的方向。我引用了链接:http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression

        【讨论】:

          猜你喜欢
          • 2018-05-16
          • 2011-05-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多