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

时间:2010-08-20 19:35:46

标签: javascript jquery

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

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

3 个答案:

答案 0 :(得分:7)

试试这个:

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;
};

答案 1 :(得分:2)

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

答案 2 :(得分:0)

你能否使用水印插件?

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

它非常易于使用,只需拨打$("input").watermark("Placeholder text")即可按照您描述的方式行事