¿Hay alguna manera de eliminar el borde negro de IEs alrededor del botón de enviar en formularios activos?

Estoy implementando un diseño que usa botones de envío personalizados. Son simplemente botones de color gris claro con un borde exterior ligeramente más oscuro:

input.button { background: #eee; border: 1px solid #ccc; } 

Esto se ve perfecto en Firefox, Safari y Opera. El problema es con Internet Explorer, tanto 6 como 7.

Como el formulario es el primero en la página, se cuenta como la forma principal y, por lo tanto, se activa desde el principio. El primer botón de envío en el formulario activo recibe un borde negro sólido en IE, para marcarlo como la acción principal.

Si apago los bordes, el borde extra negro en IE también se va. Estoy buscando una forma de mantener mis bordes normales, pero eliminé el contorno.

Bueno, esto funciona aquí:

         

si no desea agregar un contenedor a la entrada / botón, intente hacer esto. Como este es un CSS no válido, entonces sre es solo para IE. Tener el borde como para otros navegadores pero use el filtro: croma para IE …

  

trabajó para mi.

Sé que tengo casi 2 años de retraso en el juego, pero encontré otra solución (al menos para IE7).

Si agrega otro input type="submit" a su formulario antes de cualquier otro botón de enviar en el formulario, el problema desaparecerá. Ahora solo necesita ocultar este nuevo botón negro que absorbe los bordes.

Esto funciona para mí (el desbordamiento debe ser “automático”):

  

Nota: Estoy usando un doctype HTML5 ( < !doctype html> ).

Encontré una respuesta que me funciona en otro foro. Elimina el borde negro no deseado en ie6 y ie7. Es probable que algunos / muchos de ustedes no hayan colocado su entrada = “enviar” en las tags de formulario. No lo pases por alto Me funcionó después de probar todo lo demás.

Si está utilizando un botón de envío, asegúrese de que esté dentro de un formulario y no solo un conjunto de campo:

 

Pude combinar la sugerencia de David Murdoch con algunos JQuery de modo que la corrección se aplicará automáticamente a todos los elementos de ‘entrada: enviar’ en la página:

 // Test for IE7. if ($.browser.msie && parseInt($.browser.version, 10) == 7) { $('') .insertBefore("input:submit"); } 

Puede incluir esto en una página maestra o equivalente, por lo que se aplica a todas las páginas de su sitio.

Funciona, pero se siente un poco mal, de alguna manera.

Estoy construyendo sobre el ejemplo de @ nickmorss de usar filtros que realmente no funcionaron para mi situación … Usar el filtro de resplandor me resultó mucho mejor.

  

Bien, aquí hay una solución fea para que puedas sopesar … Pon el botón en un , activa el borde del botón y dale al borde al lapso.

IE es un poco dudoso acerca de los márgenes de los elementos de formulario, por lo que es posible que esto no funcione con precisión. Quizás darle al tramo el mismo fondo que el botón podría ayudar a ese respecto.

 span.button { background: #eee; border: 1px solid #ccc; } span.button input { background: #eee; border:0; } 

y

  

La mejor solución que he encontrado, es mover el borde a un elemento de envoltura, como este:

 

Con este CSS:

 .submit_button { width: 150px; border: 1px solid #ccc; } .submit_button .button { width: 150px; border: none; } 

El principal problema con esta solución es que el botón ahora es un elemento de bloque y debe ser de ancho fijo. Podríamos usar inline-block, excepto que Firefox2 no lo admite.

Cualquier mejor solución es bienvenida.

Creo que filter: chroma (color = # 000000); como metieron hace mucho tiempo es lo mejor que se puede aplicar en cierta clase. De lo contrario, tendrá que ir y aplicar una etiqueta adicional en cada botón que tenga si usa clases, por supuesto.

.buttonStyle {filter: chroma (color = # 000000); ANTECEDENTES-COLOR: # E5813C sólido; BORDER-BOTTOM: #cccccc 1px sólido; BORDER-LEFT: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px sólido; COLOR: # FF9900; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; TAMAÑO DE FUENTE: 10px; PESO FUENTE: negrita; TEXTO-DECORACIÓN: ninguno; } ¡Eso lo hizo por mí!

Tuve este problema y lo resolví con un div alrededor del botón, lo mostré como un bloque y lo coloqué manualmente. los márgenes para los botones en IE y FF eran demasiado impredecibles y no había forma de que ambos estuvieran contentos. Mi botón de envío tenía que estar perfectamente alineado con la entrada, por lo que simplemente no funcionaría sin colocar los elementos como bloques.

Esto va a funcionar:

 input[type=button] { filter:chroma(color=#000000); } 

Esto funciona incluso con la etiqueta de button y, finalmente, puede usar de forma segura la propiedad background-image css.

Una solución hackosa podría ser usar un marcado como este:

  

y aplique sus estilos de borde al elemento span.

add * border: none esto elimina el borde para IE6 e IE7, pero lo mantiene para los otros navegadores

Con la técnica de puertas correderas, usa dos spans dentro del button . Y elimine cualquier formateo en el button en su anulación de IE.

  

No puedo comentar (todavía), así que tengo que agregar mi comentario de esta manera. Creo que el consejo del Sr. David Murdoch es el mejor para Opera ( aquí ). Dios mío, qué chica tan adorable tiene por cierto.

Probé su enfoque en Opera y logré básicamente duplicar las tags de entrada de esta manera:

   

De esta forma, el primer elemento está oculto pero captura el foco de visualización que Opera le daría al segundo elemento de entrada. ¡QUIÉRALO!

Al menos en IE7 puedes modelar el borde aunque no puedas eliminarlo (configúralo en ninguno). Entonces, ajuste el color del borde al mismo color que debería hacer su fondo.

 .submitbutton { background-color: #fff; border: #fff dotted 1px; } 

si tu fondo es blanco

La respuesta correcta a esta pregunta es:

 outline: none; 

… funciona para IE y Chrome, en mi conocimiento.

Para mí, el código siguiente realmente funcionó.

  

Lo obtuve de @Mark's respuesta de @Mark's y lo cargué solo para IE.