2008-11-16 21 views

Respuesta

2

Como dijo Nahom, excepto que pondría la llamada javascript:message() directamente en la parte href (no es necesario entonces onclik).

Nota: dejar la llamada de JavaScript en el onClick tiene una ventaja: en el atributo href , se puede poner una URL para ir a si el usuario no tiene JavaScript habilitado. De esa forma, si tienen JS, se ejecuta su código. Si no lo hacen, van a algún lugar donde se les instruye para habilitarlo (tal vez).

Ahora, su rutina message no solo debe hacer la pregunta, sino también usar la respuesta: si es positiva, debe llamar a submit() en el formulario para publicar el formulario. Puede pasar this en la llamada para facilitar la obtención del formulario.

Personalmente, me gustaría ir por un botón (etiqueta de entrada como se muestra) en lugar de un simple enlace para hacer el proceso: utilizaría un paradigma más familiar para los usuarios.

[EDIT] Como yo prefiero para verificar las respuestas que doy, me escribió una prueba sencilla:

<script type="text/javascript" language="JavaScript"> 
function AskAndSubmit(t) 
{ 
    var answer = confirm("Are you sure you want to do this?"); 
    if (answer) 
    { 
    t.form.submit(); 
    } 
} 
</script> 

<form action="Tests/Test.html" method="GET" name="subscriberAddForm"> 
<input type="hidden" name="locationId" value="2721"/> 
<input type="text" name="text" value="3.1415926535897732384"/> 
<input type="button" name="Confirm" value="Submit this form" onclick="AskAndSubmit(this)"/> 
</form> 

Sí, la sumisión que se acaba de cargar la página aquí ... Probado sólo en FF3.

[EDIT] sugerencia seguido en los comentarios ... :-)

+0

"t.parentNode" funciona para este ejemplo, pero es frágil porque contiene una suposición. Mejor es "t.form". – Tomalak

+0

Tomalak es correcto, t.form sería mejor. – scunliffe

23
<a href="http://somewhere_else" onclick="return confirm()"> 

Cuando el usuario hace clic en el enlace, se llamará a la función confirm. Si la función de confirmación devuelve false, se cancela el cruce de enlace; si se devuelve verdadero, se atraviesa el enlace.

0
<a href="#" onclick="message(); return false;">???</a> 

Esta respuesta sería bien sólo cuando el clic no es necesario navegar al usuario a otra página.

15
<a href="http://something.com" onclick="return confirmAction()">try to click, I dare you</a> 

con la función

function confirmAction(){ 
     var confirmed = confirm("Are you sure? This will remove this entry forever."); 
     return confirmed; 
} 

(también puede volver al confirmar de inmediato, me separé para facilitar la lectura)

Probado en FF, Chrome e IE

+0

Su solución funcionó para mí, tal vez porque me hacía eco del enlace href de php. ¡Gracias! – Daydah

Cuestiones relacionadas