2011-02-17 18 views
5

actualmente estoy usando ..valor TEXTAREA claro después de clic (onFocus)

onfocus="this.value=''; return false;" 

para borrar el valor dentro de mi área de texto para dejar comentarios. Sin embargo, cuando hace clic para ingresar un comentario y escribe algunas cosas, si hace clic fuera del cuadro para leer tal vez algo más en la página y luego vuelve a su comentario al hacer clic nuevamente en el cuadro de texto, borra su entrada actual .

¿Hay alguna manera de borrar el área de texto en el clic inicial solo para borrar el valor predeterminado y no el resto de los clics para el resto de la sesión de la página del navegador?

Respuesta

0

Declara una variable clearedOnce en javascript que es falso. En su Onfocus, verifique esta variable. Si es falso, configúralo como verdadero y borra tu área de texto. Todos los clics posteriores no harán nada. Código:

onfocus='if (!clearedOnce) { this.value = ''; clearedOnce = true;} return false;' 
+0

@Derek: aplicar tu edición sugerido – Andomar

0

Puede utilizar una página global var.

En un elemento script encima del elemento

var tracker = {}; 

tarde ...

<textarea name="a" onfocus="if(!tracker[this.name]) { tracker[this.name]=true; this.value=''; } return false;">Placeholder text</textarea> 
8

Es mejor poner las instrucciones en una etiqueta de la etiqueta, colóquelo sobre el área de texto, y luego ocultarlo o muéstrelo si el área de texto está enfocado. La razón de esto es porque su área de texto de texas estará llena de instrucciones y estas pueden ser enviadas si están dentro de un formulario.

Pero, resolver su problema, todo lo que tiene que hacer es:

onfocus="if(this.value== "your initial text"){this.value=''}; return false;" 
+0

una versión mejor sería onfocus = "si (= this.value esto. defaultValue) {this.value = ''}; return false; " – KOGI

+0

@KOGI En un evento en el que escribe algo y luego hace clic fuera del cuadro y luego regresa, su código borrará todo lo que se haya tipeado hasta el momento, lo que lleva a la pregunta original. – MadushM

+0

@MadushM: no, en realidad, no lo hará. Observe el bit que dice 'if (this.value == this.defaultValue)' que es una comprobación para ver si el valor del cuadro de texto es el mismo que cuando se cargó la página. Si lo ha cambiado, el cuadro de texto no se borrará. – KOGI

1

esto ayudará

function clearTA { 
    if(this.value != "type here") { 
     this.value = ''; 
     return false; 
    } 
} 

y onfocus atributo HTML

...onfocus="clearTA()".. 
0

Así que entiendo que tener un valor precargado como "Ingrese su texto aquí"? Trate de añadir este javascript:

function clearText(textarea,prefilled){ 
     if(textarea.value==prefilled) 
      textarea.value=""; 
     return false; 
    } 

Entonces, la entrada debe ser: Introduzca el texto aquí

Esto debería empezar ...

1
<script type="text/javascript"> 
function clearOnInitialFocus (fieldName) { 
    var clearedOnce = false; 
    document.getElementById(fieldName).onfocus = (function() { 
    if (clearedOnce == false) { 
     this.value = ''; 
     clearedOnce = true; 
    } 
    }) 
} 
window.onload = function() { clearOnInitialFocus('myfield'); 
</script> 

Fuente: http://snipplr.com/view/2206/clear-form-field-on-first-focus/

1

Sé que es tarde, pero para cualquier otra persona que tenga este problema, creo que la respuesta más simple es

onfocus="this.value=''; this.onfocus='';"

debe hacer exactamente lo que quiere sin tener que almacenar/comprobar cualquier variable.

3

Creo que es una buena costumbre separar la lógica del contenido. Entonces, usando jQuery (todos usamos jQuery, ¿verdad?) Que podría hacer:

$(document).ready(function() { 
    var _bCleared = false; 
    $('form textarea').each(function() 
    { 
     var _oSelf = $(this); 

     _oSelf.data('bCleared', false); 
     _oSelf.click(function() 
     { 
      if (!_oSelf.data('bCleared')) 
      { 
       _oSelf.val(''); 
       _oSelf.data('bCleared', true); 
      } 
     }); 
    }); 
}); 

Esto iterar sobre todo las áreas de texto en el sitio y almacenar un valor booleano sobre su estado claro en un enlace de datos separadas. El evento onclick también se maneja por separado para cada área de texto, por lo que puede tener múltiples borrados de textarea/textarea en una sola página y no es necesario que Javascript salpique su html.

1

En su lugar, use HTML5placeholder y use un plugin jquery para navegadores más antiguos.

ejemplo Correr aquí: http://jsfiddle.net/dream2unite/xq2Cx/

<input type="text" name="email" id="email" placeholder="[email protected]"> 

debe ir acompañada de la siguiente secuencia de comandos:

$('input[placeholder], textarea[placeholder]').placeholder(); 

Al entrar en un correo electrónico el texto (marcador) desaparecerá, sólo cuando se elimina su correo electrónico volverá a aparecer el texto (marcador de posición).

Y, por último, un buen ejemplo obvio de un plugin de jQuery para marcadores de posición es ésta: http://mathiasbynens.be/demo/placeholder