2009-11-09 17 views
30

Estoy mostrando un cuadro de confirmación de JavaScript cuando el usuario hace clic en el botón "Eliminar datos". Estoy mostrando como se muestra en esta imagen:JavaScript: ¿Cómo seleccionar "Cancelar" de forma predeterminada en el cuadro de confirmación?

alt text

En la imagen, el botón "OK" está seleccionada por defecto. Deseo seleccionar el botón "Cancelar" de forma predeterminada, de modo que si el usuario presiona accidentalmente ingrese la clave, los registros estarán seguros y no serán eliminados.

¿Hay alguna forma en JavaScript para seleccionar el botón "Cancelar" de manera predeterminada?

+7

En mi humilde opinión, no debe utilizar los botones Aceptar/Cancelar o Sí/No en los cuadros de diálogo. Mejor crea tu propio cuadro de diálogo en HTML y tienes botones que dicen "Eliminar datos" y "Abortar eliminación". De esta forma, los usuarios no tendrán que leer el texto largo, solo los botones. Es decir, siempre incluya un verbo en la etiqueta de un botón. –

+2

@Crescent: es su elección, puede usar este tipo de cosas en sus aplicaciones. No estoy interesado, gracias. – Prashant

+0

@Markus, sí, siempre es mejor usar cuadros de mensaje personalizados, pero solo quiero saber si hay alguna manera de establecer el botón predeterminado en el cuadro de confirmación de javascript normal. – Prashant

Respuesta

10

Si puede utilizar plugin de jQuery, entonces aquí es una agradable

jQuery Impromptu

Para cambiar el valor por defecto botón de centrado:

$.prompt('Example 4',{ buttons: { Ok: true, Cancel: false }, focus: 1 }); 
+0

¿Alguna razón para el voto hacia abajo? – rahul

+0

Un problema sutil con esta solución es que rompe las convenciones de interfaz de usuario de la plataforma: aunque Windows coloca OK antes de Cancelar, la mayoría de los otros sistemas operativos gráficos tienen el orden invertido. Probablemente no es un gran problema :) – Nick

4

No creo que puedas hacer eso.

Pero definitivamente se puede hacer más difícil para que el usuario accidentalmente 'de acuerdo' con la confirmación, por ejemplo, obligando al usuario que escriba 'y' en un cuadro de entrada:

agree = (prompt("Type 'y' to accept", '') == 'y'); 
+4

-1 Javascript 'prompt' es el demonio. –

+2

@ josh- ¿podrías explicarlo? – Yarin

+0

@Yarin Browsers tiene configuraciones/opciones para deshabilitar explícitamente estas indicaciones. Basta de charla. –

9

No puede hacer eso, pero podría usar/escribir su propio cuadro de diálogo que se muestra usando elementos DOM (como Phoenix sugirió, simplemente no tiene que ser ese plugin jQuery en particular, puede escribir el suyo o usar complemento de otro framework JS).

Las respuestas "use jQuery + plugin X" comienzan a ser molestas. Hay muchas bibliotecas JS e incluso más complementos. Por ejemplo, usar cualquier biblioteca JS aquí no es necesaria si solo desea mostrar un diálogo personalizado. Si bien es una solución/respuesta rápida, las respuestas como esa hacen más daño a largo plazo que bien. Las personas nuevas en JavaScript o la programación en general comienzan a pensar que jQuery y/o complementos son el único camino a seguir e incluyen una biblioteca de 50kb + para escribir 3 líneas propias (que a veces ni siquiera usan la biblioteca: D).

En mi opinión, el comentario de Markus Johnsson es la mejor respuesta, es una pena que no esté publicado como tal.

+0

Bueno, es casi cierto, pero no olvides el hecho de que cada navegador reciente tiene jQuery en su caché. – AbiusX

+2

@AbiusX, el caché no se comparte entre diferentes sitios. Tampoco los navegadores pueden conservar una copia local, ya que no hay manera de que verifiquen que '' sea de hecho jQuery. Corrígeme si estoy equivocado. –

+0

+1 para evitar complementos innecesarios – Medorator

Cuestiones relacionadas