2011-06-16 53 views
13

Quiero usar jQuery para ampliar el ancho de un cuadro de texto de entrada durante el clic.Onclick Expandir ancho del cuadro de texto

Por ejemplo, si la entrada tiene un ancho predeterminado de 100 px, cuando el usuario haga clic en ella para escribir, se ampliará a 150 píxeles de ancho.

¿Es posible hacer esto?

Gracias.

Respuesta

21

He aquí un updated example en jsFiddle que anima, y ​​vuelve al tamaño predeterminado de desenfoque.

Para referencia, vea jQuery Animate documentos.

+0

Grande. No soy bueno con jQuery, así que ¿cómo haré que vuelva a su ancho predeterminado porque ya no está enfocado? Además, en lugar del cambio repentino de ancho, ¿sería posible hacer una transición suave? – Spencer

+1

Actualizado con el controlador de animación y desenfoque. – wsanville

+0

Buen ejemplo wsanville –

0

seguro. Digamos que tiene

<input id="mytextbox" /> 

que puede hacer

$("#mytextbox").focus(function(){ 
    $(this).width(150) 
}); 
4

Aquí un ejemplo de trabajo basado en el ejemplo de @ wsanville con el retraso solicitado. (Tenga en cuenta también añadí un efecto de devolverlo en la pérdida de concentración, puede quitar tan fácilmente)

Working Example

** editado el tamaño de la caja de texto

1
<input type="text" id="tbText" size="30px"/>  

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#tbText').focus(function() { 
      $('#tbText').css("width", "250px"); 
     }); 
     $('#tbText').blur(function() { 
      $('#tbText').css("width", "150px"); 
     }); 
    }); 
</script> 
7

me gustaría construya sobre el ejemplo de @ wsanville eliminando el paso adicional al guardar el tamaño original. La animación también toma valores de cadena como '+ = 50' o '- = 50' para aumentar/disminuir el ancho.

See in in action on jsfiddle

$('#box').focus(function() 
{ 
    $(this).animate({ width: '+=50' }, 'slow'); 
}).blur(function() 
{ 
    $(this).animate({ width: '-=50' }, 'slow'); 
}); 
2

Sé que esto es un poco tarde a la fiesta, pero si alguien quiere una solución CSS puro que utiliza el atributo: el enfoque.

#textbox { 
    width:100px; 
    transition: 0.5s; 
} 

#textbox:focus { 
    width:150px; 
    transition: 0.5s; 
} 

Es mi jsFiddle:

https://jsfiddle.net/qo95uquv/

Tom

Cuestiones relacionadas