2012-03-19 12 views
9

No tengo idea de por qué esto no funciona, pero estoy seguro de que es un poco de javascript muy común. Mi sintaxis es claramente deficiente, y no sé por qué:JQuery: cuadro de entrada vacío onclick

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val() = '';} return false;" /> 

¡Gracias!

Respuesta

14

Su problema es con esta línea de código:

$(this).val() = '' 

La forma correcta de establecer un valor en jQuery es:

$(this).val("Your value here"); 

Además, en línea JS nunca es una buena idea. Use este lugar:

$("#search").on("click", function() { 
    if ($(this).val() == "search") 
     $(this).val("") 
});​ 

Aquí es a working fiddle.

Referencias: jQuery .val()

+2

Perfección. ¡Gracias! –

0

no necesita $ (this) .val (""); o $ (this) .val (''); vaciarla

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val('');} return false;" /> 
+1

+1 Funcionó perfectamente. ¡Gracias! –

4

Pon esto en un archivo js separado ...

esto se volverá al valor inicial si no se escribe después de que se pierde el foco.

$(document).ready(function() { 
    $("#search").focus(function() { 
     if ($(this).val()=="search") { 
      $(this).val(''); 
     } 
    }); 

    $("#search").blur(function() { 
     if ($(this).val()=="") { 
      $(this).val('search'); 
     } 
    }); 
}); 
+0

Esto también es genial, en realidad escribí el mismo código después de la respuesta de James. ¡Gracias, sin embargo! –

-2
function search(textBox) 
{ 
    if($(textBox).val() == 'search') { 
     $(textBox).val() = ''; 
    } 
    return false; 
} 

<input type="text" value="search" id="search" name="q" onclick="return search();" /> 

probar esto y depuración.

2
$(this).val() = ''; 

debe ser

$(this).val(''); 

Ver .val() documentación.

2

Debería ser así:

<input type="text" value="search" id="search" name="q" onclick="javascript:if($(this).val() == 'search') {$(this).val('');} return false;" /> 

correct way : $this.val(''); 
incorrect way : $this.val() = ''; 
1

Esto se ha vuelto más fácil con una HTML5 marcador de posición:

<input type="text" name="search" placeholder="Enter your search query here"> 

No es compatible con los navegadores más antiguos, pero si sólo se está dirigiendo los modernos, debería estar bien para usarlo: http://caniuse.com/#feat=input-placeholder

+0

El atributo marcador de posición hace que esto sea mucho más fácil (siempre que su navegador lo admita), pero debe evitar simplemente publicar enlaces como respuestas. Los enlaces tienen una tendencia a pudrirse y desaparecer. El contenido principal debe publicarse en su respuesta. –

+0

Hola Chuck, tx para la retroalimentación. Actualicé mi respuesta. – Jarown