啊哈!我应该更好地阅读第二个链接。有人建议更改 jquery.validate.js 以检查元素的占位符属性。但我认为这是一个糟糕的解决方案,因为它可能会被 jquery.validate.js 的升级所覆盖。
但是,我发现我可以在我的脚本中覆盖验证器方法。所以我写了这个似乎有效。基本上,我复制了该方法,但添加了如下所示的行。
在我自己的验证 js 中,我添加了替换检查以查看元素是否具有占位符属性以及它是否等于占位符文本:
$.validator.addMethod(
'required',
function(value, element, param) {
// check if dependency is met
if ( !this.depend(param, element) )
return "dependency-mismatch";
switch( element.nodeName.toLowerCase() ) {
case 'select':
// could be an array for select-multiple or a string, both are fine this way
var val = $(element).val();
return val && val.length > 0;
case 'input':
if ( this.checkable(element) )
return this.getLength(value, element) > 0;
default:
// REPLACED THIS:
//return $.trim(value).length > 0;
// WITH THIS:
return ($.trim(value).length > 0) && (value != element.getAttribute('placeholder'));
}
}, '');
它似乎工作。并运行脚本调试,我可以看到它替换了“必需”。