Quiero que este enlace tenga un diálogo de JavaScript que pregunte al usuario " ¿Estás seguro? S / N ".
<a href="delete.php?id=22">Link</a>
Si el usuario hace clic en "Sí", el enlace debe cargarse, si "No" no pasará nada.
Sé cómo hacerlo en formularios, usando onclick
ejecutar una función que devuelve true
o false
. Pero, ¿cómo hago esto con un <a>
enlace?
javascript
html
dom-events
Christoffer
fuente
fuente
Respuestas:
Controlador de eventos en línea
De la manera más simple, puede usar la
confirm()
función en unonclick
controlador en línea .Manejo avanzado de eventos
Pero normalmente le gustaría separar su HTML y Javascript , por lo que le sugiero que no use controladores de eventos en línea, sino que coloque una clase en su enlace y agregue un detector de eventos.
Este ejemplo sólo funcionará en los navegadores modernos (por IEs de edad avanzada se puede utilizar
attachEvent()
,returnValue
y proporcionar una implementación paragetElementsByClassName()
o utilizar una biblioteca como jQuery que le ayudará con problemas de cross-browser). Puede leer más sobre este método avanzado de manejo de eventos en MDN .jQuery
Me gustaría estar lejos de ser considerado un fanático de jQuery, pero la manipulación del DOM y el manejo de eventos son dos áreas donde ayuda más con las diferencias del navegador. Solo por diversión, así es como se vería con jQuery :
fuente
confirm(…)
en el controlador en línea. No pude reproducir eso.Sugeriría evitar JavaScript en línea:
Demostración de JS Fiddle .
Lo anterior actualizado para reducir el espacio, aunque manteniendo la claridad / función:
Demostración de JS Fiddle .
Una actualización algo tardía, para usar
addEventListener()
(como se sugiere, por bažmegakapa , en los comentarios a continuación):Demostración de JS Fiddle .
Lo anterior vincula una función al evento de cada enlace individual; lo cual es potencialmente un desperdicio, cuando podría vincular el manejo de eventos (mediante delegación) a un elemento ancestro, como el siguiente:
Demostración de JS Fiddle .
Debido a que el manejo de eventos está asociado al
body
elemento, que normalmente contiene una gran cantidad de otros elementos en los que se puede hacer clic, he usado una función provisional (actionToFunction
) para determinar qué hacer con ese clic. Si el elemento cliqueado es un enlace y, por lo tanto, tiene untagName
dea
, el manejo de clics se pasa a lareallySure()
función.Referencias
addEventListener()
.confirm()
.getElementsByTagName()
.onclick
.if () {}
.fuente
addEventListener
). +1 sin embargo.addEventListener()
modelo.if(check == true)
conif(check)
.fuente
También puedes probar esto:
fuente
jAplus
Puedes hacerlo sin escribir código JavaScript
Página de demostración
fuente
Este método es ligeramente diferente de cualquiera de las respuestas anteriores si adjunta su controlador de eventos usando addEventListener (o attachEvent).
Puede adjuntar este controlador con:
O para versiones anteriores de Internet Explorer:
fuente
window.event
.Solo por diversión, voy a usar un solo evento en todo el documento en lugar de agregar un evento a todas las etiquetas de anclaje:
Este método sería más eficiente si tuviera muchas etiquetas de anclaje. Por supuesto, se vuelve aún más eficiente cuando agrega este evento al contenedor que tiene todas las etiquetas de anclaje.
fuente
La mayoría de los navegadores no muestran el mensaje personalizado pasado
confirm()
.Con este método, puede mostrar una ventana emergente con un mensaje personalizado si su usuario cambió el valor de cualquier
<input>
campo.Puede aplicar esto solo a algunos enlaces , o incluso a otros elementos HTML en su página. Simplemente agregue una clase personalizada a todos los enlaces que necesitan confirmación y aplique el siguiente código:
Intente cambiar el valor de entrada en el ejemplo para obtener una vista previa de cómo funciona.
fuente
USO DE PHP, HTML Y JAVASCRIPT para solicitar
Solo si alguien busca usar php, html y javascript en un solo archivo, la respuesta a continuación está funcionando para mí ... adjunto con el ícono de arranque "basura" para el enlace.
la razón por la que usé el código php en el medio es porque no puedo usarlo desde el principio ...
el siguiente código no funciona para mí: -
y lo modifiqué como en el primer código, luego ejecuto exactamente lo que necesito. Espero que pueda ayudar a alguien que no conozca mi caso.
fuente