2010-07-25 17 views
10

bien, hoy estoy haciendo una función HTML auxiliar. Se ve así:Entrada HTML onfocus & onblur?

function Input($name,$type,$lable,$value= null){ 
    if (isset($value)) { 
    //if (this.value=='search') this.value = '' 
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>'; 
    } 
    if (!isset($value)) { 
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />'; 
    } 
} 

Como se puede ver, si inserta un valor que va a hacer algo de JavaScript para que cuando hago clic en el cuadro, el texto dentro de la caja va a desaparecer,

Pregunta: ¿Cómo podemos hacer que tenga un valor cuando no estamos en la entrada? (Por favor mira el cuadro de búsqueda en stackoverflow, sin embargo, el que está en stackoverflow no regresa después de que no estamos apuntando al cuadro de entrada? Tal vez usando onblur? ¿Estoy en lo cierto?

Espero que entiendas lo que significar.

bien lástima pues algunos de ustedes no están recibiendo lo que quiero decir favor ver

cuando no im clic en él.

alt text http://img39.imageshack.us/img39/4128/48048759.png

cuando pulso sobre él.

alt text http://img691.imageshack.us/img691/4485/94918020.png

cuando no im clic en él de nuevo.

alt text http://img691.imageshack.us/img691/4485/94918020.png

debe ser

cuando no im clic en él.

alt text http://img39.imageshack.us/img39/4128/48048759.png

cuando estoy haciendo clic en él.

alt text http://img691.imageshack.us/img691/4485/94918020.png

cuando no im clic en él de nuevo.

alt text http://img39.imageshack.us/img39/4128/48048759.png

+0

gracias gertG por la solución. –

+0

sus imágenes desaparecieron. Debe cargarlos en su lugar – mplungjan

Respuesta

29

desea que esta

<input ... 
onfocus="if (this.value==this.defaultValue) this.value = ''" 
onblur="if (this.value=='') this.value = this.defaultValue" /> 

Actualización: Algunos navegadores más nuevos van a hacer lo que desea, simplemente añadiendo el atributo marcador de posición:

<input placeholder="Please enter your name" /> 

Aquí está el PHP según su código

echo <<<END 
<label for="$name">$lable</label> 
<input type="$type" name="$name" id="$name" value="$value" 
onfocus="if (this.value==this.defaultValue) this.value = ''" 
onblur="if (this.value=='') this.value = this.defaultValue"/> 
END; 
+0

sí, debería verse así :), déjame estudiarlo primero :) –

+0

todavía tiene algunos problemas. 'echo ' '; ' será como '' –

+0

'echo '';' ¡trabajo! Gracias –

3

Si entiendo correctamente, así que utiliza esta línea de HTML para hacer ese efecto.

<input name="q" class="textbox" tabindex="1" onfocus="if (this.value=='search') this.value = ''" type="text" maxlength="80" size="28" value="search"> 

no relacionadas con su pregunta, pero se puede y debe reemplazar su segunda sentencia if con una declaración más.

function Input($name,$type,$lable,$value= null){ 
    if (isset($value)) { 
    //if (this.value=='search') this.value = '' 
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" value="'.$value.'" onfocus="if (this.value==\''.$value.'\') this.value = \'\' "/>'; 
    } 
    else { 
    echo '<label for="'. $name .'">'. $lable .'</label><input type="'.$type.'" name="'. $name .'" id="'. $name .'" />'; 
    } 
} 

Porque si isset ($ value) devuelve false entonces usted sabe que es un hecho que no se ha establecido ya que sólo puede devolver uno de dos valores, verdadero o falso.

EDITAR: No tenga en cuenta esta respuesta. No estaba claro cuál era la pregunta antes de la edición.

3

En cuanto a la fuente de esta página muestra el siguiente

<form id="search" action="/search" method="get"> 
    <div> 
    <input name="q" class="textbox" tabindex="1" 
    onfocus="if (this.value=='search') this.value = ''" 
    type="text" maxlength="80" size="28" value="search"> 
    </div> 
+0

sí, pero no vuelve: | cuando lo estoy haciendo de nuevo ... –

+1

Has aceptado una respuesta. ¿Por qué todavía estás investigando? Este es el código exacto que SO utiliza. Se comportará exactamente como lo ve en este sitio. – Mike

2

o esto si quieres que cambie de nuevo a por defecto no importa lo que el texto se introduce ...

<input ... 
onfocus="if (this.value==this.defaultValue) this.value = ''" 
onblur="if (this.value!=this.defaultValue) this.value = this.defaultValue" /> 
+0

¿Por qué demonios querrías hacer eso? Entonces también podrías hacerlo solo. – mplungjan

+0

Quizás prefieras querer: '' De esta forma recuperas el texto si no se ingresó texto cuando 'input' pierde el foco. – mickey

0

probar esto. Tal vez puede ayudarle:

<form action="/search" method="get"> 
<input type="text" name="q" value="Search..." onfocus="if (this.value == 'Search...') (this.value='')" onblur="if (this.value == '') (this.value='Search...')" /> 
Cuestiones relacionadas