假设我使用了一个“占位符”jQuery插件,它从输入元素中读取“占位符”属性,并对尚不支持占位符的浏览器进行模拟。只有一些输入元素可以重写jQuery .val()吗?
但我仍然希望$(“input”)。val()正常工作 - 也就是说,如果文本框中的文本是占位符文本,则返回“”。无论如何,我可以重写.val()只是为了这些输入?
假设我使用了一个“占位符”jQuery插件,它从输入元素中读取“占位符”属性,并对尚不支持占位符的浏览器进行模拟。只有一些输入元素可以重写jQuery .val()吗?
但我仍然希望$(“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")
,它会在你描述
这是要走的路的行为方式。 – Ender 2010-08-20 21:23:16
但是如果用户实际输入的值与占位符相同,该怎么办? – RobG 2013-10-10 10:03:40