【发布时间】:2010-08-20 19:35:45
【问题描述】:
假设我正在使用一个“占位符”jQuery 插件,它从输入元素中读取“占位符”属性,并为尚不支持占位符的浏览器模拟它。
但我仍然希望 $("input").val() 正常工作——也就是说,如果文本框中的文本是占位符文本,则返回 ""。无论如何我可以为这些输入覆盖 .val() 吗?
【问题讨论】:
标签: javascript jquery
假设我正在使用一个“占位符”jQuery 插件,它从输入元素中读取“占位符”属性,并为尚不支持占位符的浏览器模拟它。
但我仍然希望 $("input").val() 正常工作——也就是说,如果文本框中的文本是占位符文本,则返回 ""。无论如何我可以为这些输入覆盖 .val() 吗?
【问题讨论】:
标签: javascript jquery
试试这个:
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"),它就会按照您描述的方式运行
【讨论】: