2012-03-19 20 views
29

Mi página web tiene campos de entrada a la cual he aplicado el siguiente CSS:¿Cómo usar elipsis de desbordamiento de texto en un campo de entrada html?

.ellip { 
    white-space: nowrap; 
    width: 200px; 
    overflow: hidden; 
    -o-text-overflow: ellipsis; 
    -ms-text-overflow: ellipsis; 
    text-overflow: ellipsis; 
} 

Pero esto no parece tener ningún efecto. ¿Me falta algo obvio aquí o no es posible tener una elipsis en un campo de entrada usando solo CSS?

+2

Just checked y 'text-overflow: ellipsis' funciona muy bien en elementos' input' (al menos en Chrome) – talsraviv

+1

La respuesta aceptada no parece responder realmente a esta pregunta. – jennEDVT

Respuesta

-9

Un campo es un elemento con sus propias reglas. El campo de entrada se implementa de forma tal que si el texto es más largo que el campo, el texto quedará oculto.

La razón para esto es que si usa el campo en un formulario y sería posible usar elipsis de desbordamiento de texto, entonces solo transmitiría el contenido truncado, lo que no es el efecto deseado.

+13

** a) ** Firefox 16 hace una elipsis (en la posición incorrecta), cuando el campo de entrada no tiene foco ** b) ** la razón es totalmente incorrecta, lo que se muestra no tiene nada que ver con lo que está en el dom (y así transmitido) ** c) ** tener un marcador de puntos suspensivos cuando no está enfocado es (posiblemente) mejor desde un punto de vista de usabilidad – bernstein

+0

Chrome también proporciona puntos suspensivos cuando el cuadro de texto no está enfocado. Si desea cambiar su respuesta de "falta de hechos", me encantaría eliminar el voto negativo que le he dado. –

4

Según mis pruebas, Chrome, Safari y Firefox ahora lo admiten.

Sin embargo, tienen efectos ligeramente diferentes.

En desenfoque Firefox se agrega ... a la derecha del texto, pero solo si hay texto oculto en el lado derecho del cuadro de texto.

Mientras que en el desenfoque, Chrome parece saltar al principio del texto y agrega el ... al final, independientemente de dónde haya dejado la posición de desplazamiento del texto.

+0

Firefox puede representar caracteres de desbordamiento de texto en ambos lados del campo de entrada al definir dos valores, como 'text-overflow: ellipsis ellipsis;'. Chrome parece tener problemas con eso. – Thasmo

+0

Esto parece dejar de funcionar cuando el ancho es casi el ancho del primario de la entrada. – trysis

13

Sé que esta es una pregunta antigua, pero estaba teniendo el mismo problema y me encontré con this blog post from Front End Tricks And Magic que funcionó para mí, así que pensé que lo compartiría en caso de que la gente todavía tenga curiosidad. La esencia del blog es que PUEDE hacer una elipsis en una entrada en IE, sin embargo, solo si la entrada tiene un atributo de solo lectura.

Obviamente, en muchos escenarios, no queremos que nuestra entrada tenga un atributo de solo lectura. En ese caso puede usar JavaScript para alternarlo. Este código se toma directamente del blog, por lo que si encuentras esta respuesta útil, puedes considerar revisar el blog y dejar un comentario de agradecimiento al autor.

HTML:

<div class="long-value-input-container"> 
    <input type="text" 
    value="sdghkjsdghhjdfgjhdjghjdfhghjhgkdfgjnfkdgnjkndfgjknk" class="long- 
    value-input" readonly /> 
</div> 

CSS:

.long-value-input { 
    width: 200px; 
    height: 30px; 
    padding: 0 10px; 
    text-overflow: ellipsis; 
    white-space: nowrap; 
    overflow: hidden; 
} 

Javascript (jQuery)

// making the input editable 
$('.long-value-input').on('click', function() { 
    $(this).prop('readonly', ''); 
    $(this).focus(); 
}) 

// making the input readonly 
$('.long-value-input').on('blur', function() { 
    $(this).prop('readonly', 'readonly'); 
}); 
+0

¡Salvó mi día con sólo lectura! +1 a usted, señora! – Lucas

+0

.click() no funciona cuando se tabula a través de controles, y si mueve la eliminación de props a .focus(), eso viene con su propio conjunto de problemas (en realidad no elimina la propiedad de solo lectura ya que todavía está tiene foco) –

7

Configuración text-overflow:ellipsis en la entrada sí hizo el truco para mí. Trunca y coloca las elipsis cuando la entrada está desenfocada.

+0

Esta es la respuesta correcta, bien hecho :) – trenthogan

Cuestiones relacionadas