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