我正在尝试将 jQuery 验证插件 (http://docs.jquery.com/Plugins/Validation/) 与字段提示结合使用。
问题是字段提示将文本放入 value 属性中,并且由于 value 属性中有文本,因此验证插件不会发现任何错误。
我的想法是,如果该字段为空或该字段包含与字段提示相同的文本(即:如果有人要在名字字段中输入“名字”,那么将导致错误) .
有没有一种优雅的方式将验证与代码提示结合使用?
谢谢!
多伦
我正在尝试将 jQuery 验证插件 (http://docs.jquery.com/Plugins/Validation/) 与字段提示结合使用。
问题是字段提示将文本放入 value 属性中,并且由于 value 属性中有文本,因此验证插件不会发现任何错误。
我的想法是,如果该字段为空或该字段包含与字段提示相同的文本(即:如果有人要在名字字段中输入“名字”,那么将导致错误) .
有没有一种优雅的方式将验证与代码提示结合使用?
谢谢!
多伦
有两种“提示”代码(更好地称为水印或占位符文本):一种是替换字段的值,另一种是在输入上放置某种元素以看起来文本在输入内。
我假设您使用的是第一种方法,因此一个简单(也是最好的)解决方案是完全避免这些类型,并切换到采用第二种方法的插件。有很多插件以这种方式工作,例如这个,请务必阅读它们的操作方式。
如果更改提示代码不是一种选择,那么您还有另外两种选择。两者都不理想,但也许有一个更适合您:
提交时清除值
在提示代码中,绑定到submit
表单的事件,并遍历所有输入以清除与提示具有相同值的任何输入。
这种方法的问题是它必须在验证插件初始化之前执行。它也不适用于在您键入时验证字段。您还必须在验证后再次检查输入以放回提示文本。
覆盖 .val()
由于验证插件使用 jQuery,如果值等于提示,您可以覆盖 jQuery 的.val()
函数以返回:''
var oldVal = $.fn.val;
$.fn.val = function () {
var returnVal = oldVal.call(this);
if (returnVal == hintVal) returnVal = '';
return returnVal;
};
这样做的明显缺点是插件必须始终用于.val()
检索输入值。