同时使用jQuery验证和字段提示

同时使用jQuery验证和字段提示,jquery,forms,jquery-validate,hints,Jquery,Forms,Jquery Validate,Hints,我正在尝试使用jQuery验证插件(http://docs.jquery.com/Plugins/Validation/)结合现场提示 问题是,字段提示将文本放入value属性,并且由于value属性中有文本,验证插件没有发现任何错误 我的想法是,如果字段为空或字段包含与字段提示相同的文本(即:如果有人在“名字”字段中输入“名字”,则会导致错误),则验证会抛出错误 是否有一种优雅的方式将验证与代码暗示结合使用 谢谢 Doron有两种“暗示”代码(更好地称为水印或占位符文本):一种用于替换字段值,

我正在尝试使用jQuery验证插件(http://docs.jquery.com/Plugins/Validation/)结合现场提示

问题是,字段提示将文本放入value属性,并且由于value属性中有文本,验证插件没有发现任何错误

我的想法是,如果字段为空或字段包含与字段提示相同的文本(即:如果有人在“名字”字段中输入“名字”,则会导致错误),则验证会抛出错误

是否有一种优雅的方式将验证与代码暗示结合使用

谢谢

Doron

有两种“暗示”代码(更好地称为水印或占位符文本):一种用于替换字段值,另一种用于在输入上放置某种类型的元素,使其看起来好像文本在输入中

我假设你使用的是第一种,所以一个简单(也是最好的)解决方案是完全避免使用这类插件,然后切换到使用第二种方法的插件。有很多插件都是这样工作的,比如,一定要了解它们是如何工作的

如果更改提示代码不是一个选项,那么您还有另外两个选择。两者都不理想,但可能其中一个更适合您:

提交时清除值

在提示代码中,绑定到表单的
submit
事件,循环所有输入以清除与提示值相同的任何输入

此方法的问题是,在初始化验证插件之前,必须执行。它也无法在您键入时验证字段。您还必须在验证后再次检查输入,以将提示文本放回

Overide.val()

由于验证插件使用jQuery,如果值等于提示,则可以跳过jQuery的
.val()
函数返回
'

var oldVal = $.fn.val;
$.fn.val = function () {
    var returnVal = oldVal.call(this);
    if (returnVal == hintVal) returnVal = '';
    return returnVal;
};

这样做的明显缺点是插件必须始终使用
.val()
检索输入值。

谢谢!不过,我很难弄清楚如何将其应用于当前的验证代码,因为这里包含的语法与jQuery validate插件的函数初始化代码完全不同。另外,hintVal是我需要在代码前面声明的变量吗?@Doron,该代码需要放在jQuery加载后的任何位置。是的,
hintVal
应替换为表示提示值的某个变量。如果说提示位于元素的属性“hint”中,则将
hintVal
替换为
this.attr('hint'))
。最好的方法是使用HTML5标准中的占位符属性。所有现代浏览器都使用它,但Internet Explorer除外,这使得它还不能使用。我对几年前浏览器大战期间切换到IE而不是Netscape表示遗憾:(