【问题标题】:Can I override jQuery .val() for only some input elements?我可以只为某些输入元素覆盖 jQuery .val() 吗?
【发布时间】:2010-08-20 19:35:45
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 但是如果用户实际键入的值与占位符相同怎么办?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你可以使用水印插件吗?

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多