solucionar - prompt javascript ejemplo
Problema simple de JavaScript: confirmación onClick que no impide la acción predeterminada (10)
Estoy creando un enlace de eliminación simple con un evento onClick que muestra un diálogo de confirmación. Quiero confirmar que el usuario quiere eliminar una entrada. Sin embargo, parece que cuando se hace clic en Cancelar en el cuadro de diálogo, la acción predeterminada (es decir, el enlace href) aún se está llevando a cabo, por lo que la entrada aún se elimina. No estoy seguro de lo que estoy haciendo mal aquí ... Cualquier comentario sería muy apreciado.
EDITAR: En realidad, de la forma en que el código es ahora, la página ni siquiera hace que la función llame ... por lo tanto, no aparece ningún diálogo. Tuve el código onClick como:
onClick="confirm(''Delete entry?'')"
lo que hizo abrir un cuadro de diálogo, pero todavía iba al enlace en Cancelar.
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<script type="text/javascript">
function delete() {
return confirm(''Delete entry?'')
}
</script>
...
<tr>
<c:if test="${userIDRO}">
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}"/>" />
<img src="images/edit.GIF" ALT="Edit this skill." border="1"/></a>
</td>
<td>
<a href="showSkill.htm?row=<c:out value="${skill.employeeSkillId}&remove=1"/>" onClick="return delete()"/>
<img src="images/remove.GIF" ALT="Remove this skill." border="1"/></a>
</td>
</c:if>
</tr>
Antes que nada, delete es una palabra reservada en javascript, me sorprende que incluso se ejecute por ti (cuando lo pruebo en Firefox, obtengo un error de sintaxis)
En segundo lugar, su HTML se ve raro: ¿hay alguna razón por la que esté cerrando las etiquetas de anclaje de apertura con />
lugar de simplemente?
Usar un enlace simple para una acción como eliminar un registro me parece peligroso: ¿qué sucede si un rastreador intenta indexar sus páginas? Ignorará cualquier javascript y seguirá cada enlace, probablemente no sea algo bueno.
Es mejor que uses un formulario con method = "POST".
Y luego tendrás un evento "OnSubmit" para hacer exactamente lo que quieras ...
Yo uso esto, funciona como un encanto. No es necesario tener ninguna función, solo en línea con su (s) enlace (s)
onclick="javascript:return confirm(''Are you sure you want to delete this comment?'')"
Tuve un problema similar (haga clic en el botón, pero después de cancelar el clic, todavía elimina mi objeto), así que hice esto de esa manera, espero que ayude a alguien en el futuro:
$(''.deleteObject'').click(function () {
var url = this.href;
var confirmText = "Are you sure you want to delete this object?";
if(confirm(confirmText)) {
$.ajax({
type:"POST",
url:url,
success:function () {
// Here goes something...
},
});
}
return false;
});
prueba esto:
OnClientClick = ''return (confirm ("¿Estás seguro de que deseas eliminar este comentario?"));''
<img src="images/delete.png" onclick="return confirm_delete(''Are you sure?'')">
<script type="text/javascript">
function confirm_delete(question) {
if(confirm(question)){
alert("Action to delete");
}else{
return false;
}
}
</script>
Si desea utilizar pequeños comandos en línea en la etiqueta onclick, puede ir con algo como esto.
<button id="" class="delete" onclick="javascript:if(confirm(''Are you sure you want to delete this entry?'')){jQuery(this).parent().remove(); return false;}" type="button"> Delete </button>
Hay un error tipográfico en su código (la etiqueta a se cierra demasiado pronto). Puedes usar:
<a href="whatever" onclick="return confirm(''are you sure?'')"><img ...></a>
tenga en cuenta la devolución (confirmar) : el valor devuelto por los scripts en evens intrínsecos decide si se ejecuta o no la acción predeterminada del navegador; en caso de que necesite ejecutar un gran fragmento de código, puede llamar a otra función:
<script type="text/javascript">
function confirm_delete() {
return confirm(''are you sure?'');
}
</script>
...
<a href="whatever" onclick="return confirm_delete()"><img ...></a>
(tenga en cuenta que eliminar es una palabra clave)
Para completar: los navegadores modernos también admiten eventos DOM, lo que le permite registrar más de un controlador para el mismo evento en cada objeto, acceder a los detalles del evento, detener la propagación y mucho más; ver eventos DOM
Bueno, solía tener el mismo problema y el problema se solucionó añadiendo la palabra " devolver " antes de confirmar:
onclick="return confirm(''Delete entry?'')"
Desearía que esto pudiese ser útil para ti ..
¡Buena suerte!
He tenido problemas con IE7 y he devuelto falso antes.
Compruebe mi respuesta aquí a otro problema: JavaScript no se ejecuta en IE