简体   繁体   English

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

[英]Can I override jQuery .val() for only some input elements?

Suppose I'm using a "placeholder" jQuery plugin that reads the "placeholder" attribute from input elements and simulates it for browsers that don't yet support placeholders. 假设我使用的是一个“占位符”jQuery插件,它从输入元素中读取“占位符”属性,并为尚未支持占位符的浏览器模拟它。

But I would still like $("input").val() to work properly -- that is, to return "" if the text in the textbox is the placeholder text. 但我仍然希望$(“input”)。val()正常工作 - 也就是说,如果文本框中的文本是占位符文本,则返回“”。 Is there anyway I can override .val() just for these inputs? 无论如何我可以覆盖.val()只是为了这些输入?

try this: 尝试这个:

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

and simply use $("#ele_id").rVal() to retrieve values. 并简单地使用$(“#ele_id”)。rVal()来检索值。 Or if you want to replace the val function (and use it as normal): 或者,如果要替换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()方法,然后检查它是否是正常输入。

Could you possibly use a watermark plugin? 你可以使用水印插件吗?

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

It's pretty easy to use, just call $("input").watermark("Placeholder text") and it will behave in the way you described 它非常容易使用,只需调用$("input").watermark("Placeholder text")它就会按照你描述的方式运行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM