2010-09-09 13 views
6

Tengo una <form> que tiene este aspecto:Adición de “requerido” de texto a un formulario HTML a través de CSS

<form> 
    <input type="text" name="name" id="name" /><span class="required"></span> 
</form> 

Lo que quiero hacer es mostrar un poco de texto, como * o Required en el elemento <span>, en lugar de "codificación duro" el texto para cada uno de esos lugar que necesitan que el texto así que la forma es como la siguiente:

[input box] Required 

Busqué en google y encontré que podría hacerse mediante un estilo CSS usando content tales como:

.required:before 
{ 
    content: "aaaa" 
} 

Pero, debo utilizar esta técnica (¿es compatible con todos los navegadores importantes, por ejemplo) o hay una manera más preferida de hacer este tipo de cosas?

Gracias

ACTUALIZACIÓN Ps. No quiero usar JavaScript para esto, simplemente CSS.

Respuesta

3

Acepto que agregar contenido mediante CSS no es correcto en la mayoría de los casos. Sin embargo, destacando visualmente un campo obligatorio, me parece totalmente correcto hacerlo de esta manera.

content no es lo suficientemente compatible (IE no lo admite en absoluto IIRC).

Lo que podría hacer es tener el lapso "requerido" contener una imagen de fondo que contiene el texto "requerido" o un asterisco. Usar texto gráfico tiene algunos inconvenientes, pero ninguno que una solución basada en jQuery tampoco tendría.

+1

Pls vea mi comentario @Pranay Rana arriba también. Si uso el atributo "background-image", ¿no es lo mismo que el atributo "content", con la única diferencia de que en el caso de "content" agrego una cadena y con "background-image" agrego un ¿imagen? Tampoco es "contenido", pero ambos están agregando algunos "datos" presentados visualmente, ¿verdad? – Zabba

+0

@Zabba estrictamente hablando, sí. No está sincronizado con la filosofía de separar el contenido y la presentación. Pero si esto funciona para ti, teniendo en cuenta todas las desventajas (el texto gráfico no se puede leer en los lectores de pantalla, no se imprime, etc.) tiendo a decir que no importa. –

+2

@Zabba: La diferencia es que 'background-image' es ampliamente compatible. – mpen

1

Creo que debería estar mirando JavaScript. Agregar contenido a etiquetas con clases/ID específicas es una cosa para la que se usa JavaScript. Hay muchas bibliotecas para acelerar el tiempo de desarrollo: jQuery, Prototype, Dojo y MooTools.

+0

Gracias Extrakun, debería haber mencionado que quería evitar JavaScript para esto. Actualizó la pregunta. – Zabba

+1

No creo que haya ninguna otra solución del lado del cliente además de JavaScript. Es posible que desee ver la programación del lado del servidor que le permite usar plantillas y una programación simple para duplicar contenido. – Extrakun

2

puede usar jQuery para esto.

jQuery es una librería javascript:

escritura en la cabecera de este código

$(document).ready(function(){ 
    $(span[class=required]).innerText='<sometext>'; 
}); 

pero u debe descargar este plugin. pero también puede usar javascript

+1

Esta es una solución perfecta, incluso con un ejemplo de código .: +1. Considere usar "usted" en lugar de "u" sin embargo, hará que su estilo de escritura parezca más maduro –

+0

No funcionó para mí (error de sintaxis). Una forma de hacerlo funcionar fue: $ (documento) .ready (función() { $ ('span.required') texto ('*'); }); – jarmod

2

¡Definitivamente no debería usar CSS para hacer eso! ¡Dios no! : p

Como dije anteriormente use javascript - pero si quiere evitar eso, entonces tiene que usar Server Side Scripting - Así que aprenda algo de PHP.

+0

+1 para manejar el lado del servidor – cjk

+0

porque gracias. :) –

+2

No estoy de acuerdo en este caso específico: comenzar a usar un lenguaje del lado del servidor para crear un formulario es mucho más complicado que un poco de CSS para representar, por ejemplo, un asterisco. En general, sin embargo, tienes razón. –

5

Comprobar esto: Content

aslo comprobar esta compatibilidad alt text

No utilice

Siento que no hay que utilizar la declaración de contenido en absoluto. Agrega contenido a la página y CSS está destinado a agregar presentaciones a la página y no a contenido. Por lo tanto, creo que debería usar JavaScript si desea generar contenido dinámicamente. CSS es la herramienta incorrecta para este trabajo.

+0

microsoft ataca de nuevo ... :( –

+0

Pero si CSS tiene solo fines de presentación, ¿cuál es la razón por la que CSS tiene el atributo de contenido? Busqué en el W3C (http://www.w3.org/TR/2009/CR-) CSS2-20090908/generate.html # propdef-content) y dice: "El contenido generado no altera el árbol de documentos. En particular, no se retroalimenta al procesador de lenguaje de documentos (por ejemplo, para reparsing)". en realidad es "presentación" y no se agrega "contenido" a la página, ¿no? – Zabba

+5

No creo que admita este argumento de que no se debe usar porque agrega "contenido" a la página. Agregando un poco " required "blurb no es más contenido que una imagen de fondo, o icono, o colores informativos que CSS ya transmite. No debe usarse para insertar párrafos, pero para algo como esto, creo que es perfectamente semánticamente adecuado. . IE no lo soporta muy bien. Lo que yo haría es usar la etiqueta darn, entonces nosotros JS a fi x solo en los navegadores rotos. – mpen

2

Como otros han notado que CSS puede hacer esto, pero no es totalmente compatible y tampoco es la forma correcta de abordar este problema. Si es absolutamente crucial que aparezca el texto "requerido", entonces debe agregarlo en el HTML. Javascript es una solución adecuada hasta cierto punto, pero solo si no puede editar el código fuente. Mientras que el contenido se puede generar usando JS, obviamente solo aparecerá a las personas con JavaScript habilitado, y se agrega a la complejidad del mantenimiento. Cuando alguien lokos en la página dentro de cinco años para hacer un cambio de código, inicialmente se preguntará de dónde viene el texto "requerido".

Una otra opción que sería bastante rápido y bastante ordenada sería dar el lapso de una imagen de fondo de un asterisco e incluir una clave por encima de la forma:

* required field 
+0

Me gusta la parte "Cuando alguien mira la página dentro de cinco años para cambiar el código", gracias, no pensé en ese ángulo. – Zabba

1

que realmente debería añadir este texto en el HTML. Las otras soluciones no son accesibles: los usuarios no videntes (por ejemplo) no sabrán que el campo es obligatorio.

Cuestiones relacionadas