我可以只覆盖一些输入元素的jQuery .val()吗?

假设我使用的是一个“占位符”jQuery插件,它从输入元素中读取“占位符”属性,并为尚未支持占位符的浏览器模拟它。

但我仍然希望$(“input”)。val()正常工作 – 也就是说,如果文本框中的文本是占位符文本,则返回“”。 无论如何我可以覆盖.val()只是为了这些输入?

试试这个:

jQuery.fn.rVal=function() { if(this[0]) { var ele=$(this[0]); if(ele.attr('placeholder')!=''&&ele.val()==ele.attr('placeholder')) { return ''; } else { return ele.val(); } } return undefined; }; 

并简单地使用$(“#ele_id”)。rVal()来检索值。 或者,如果要替换val函数(并正常使用它):

 jQuery.fn.rVal=jQuery.fn.val; jQuery.fn.val=function(value) { if(value!=undefined) { return this.rVal(value); } if(this[0]) { var ele=$(this[0]); if(ele.attr('placeholder')!=''&&ele.rVal()==ele.attr('placeholder')) { return ''; } else { return ele.rVal(); } } return undefined; }; 

您可以全局覆盖val()方法,然后检查它是否是正常输入。

你可以使用水印插件吗?

http://code.google.com/p/jquery-watermark/

它非常容易使用,只需调用$("input").watermark("Placeholder text") ,它将按照您描述的方式运行