2010-08-20 18 views
7

Supongamos que estoy usando un plugin jQuery de "marcador de posición" que lee el atributo "marcador de posición" de los elementos de entrada y lo simula para los navegadores que aún no admiten marcadores de posición.¿Puedo anular jQuery .val() solo para algunos elementos de entrada?

Pero me gustaría que $ ("input"). Val() funcione correctamente, es decir, que devuelva "" si el texto en el cuadro de texto es el texto del marcador de posición. ¿Hay alguna manera de que pueda anular .val() solo para estas entradas?

Respuesta

6

probar esto:

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

y simplemente usar $ ("# ele_id") rval() para recuperar los valores.. O si desea reemplazar la función Val (y utilizarlo como normal):

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

este es el camino a seguir. – Ender

+0

Pero, ¿qué sucede si el usuario realmente escribe un valor que es el mismo que el marcador de posición? – RobG

2

Puede anular el método val() globalmente, luego verifique si es una entrada normal.

0

Cómo es posible usar un plugin marca de agua?

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

Es bastante fácil de usar, basta con llamar $("input").watermark("Placeholder text") y se comportará de la manera que usted describe

Cuestiones relacionadas