2010-08-20 33 views
7

假设我使用了一个“占位符”jQuery插件,它从输入元素中读取“占位符”属性,并对尚不支持占位符的浏览器进行模拟。只有一些输入元素可以重写jQuery .val()吗?

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

回答

6

试试这个:

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

这是要走的路的行为方式。 – Ender 2010-08-20 21:23:16

+0

但是如果用户实际输入的值与占位符相同,该怎么办? – RobG 2013-10-10 10:03:40

2

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

相关问题