2008-11-16 4 views

Antwort

2

Wie Nahom sagte, außer ich würde den javascript:message() Aufruf direkt in den href Teil setzen (keine Notwendigkeit für onclik dann).

Hinweis: Um den JavaScript-Aufruf in den onClick verlassen hat einen Vorteil: im href Attribut Sie eine URL gehen setzen können, wenn der Benutzer nicht über JavaScript aktiviert. Auf diese Weise wird Ihr Code ausgeführt, wenn sie über JS verfügen. Wenn sie es nicht tun, gehen sie irgendwo hin, wo sie angewiesen werden, es zu aktivieren (vielleicht).

Nun muss Ihre message Routine nicht nur die Frage stellen, sondern auch die Antwort verwenden: Wenn positiv, muss sie submit() auf dem Formular aufrufen, um das Formular zu posten. Sie können this in dem Aufruf übergeben, um das Abrufen des Formulars zu erleichtern.

Persönlich würde ich für eine Schaltfläche (Eingabe-Tag, wie Sie zeigen) anstelle eines einfachen Links, um den Prozess zu tun: Es würde ein vertrauter Paradigma für die Benutzer verwenden.

[EDIT] Da ich lieber Antworten zu überprüfen, ich gebe, schrieb ich einen einfachen Test:

<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> 

Ja, senden die neu zu laden einfach die Seite hier ... Getestet nur in FF3.

[EDIT] und anschließend Vorschlag in den Kommentaren ... :-)

+0

"t.parentNode" funktioniert für dieses Beispiel, aber es ist brüchig, weil es eine Annahme enthält. Besser ist "t.form". – Tomalak

+0

Tomalak ist richtig, t.form wäre besser. – scunliffe

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

Wenn der Benutzer auf den Link klickt, die confirm Funktion aufgerufen. Wenn die Bestätigungsfunktion false zurückgibt, wird der Link-Traversal abgebrochen, wenn true zurückgegeben wird, wird der Link durchlaufen.

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

Diese Antwort würde nur in Ordnung sein, wenn der Klick NICHT der Benutzer zu einer anderen Seite navigieren müssen.

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

mit der Funktion

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

(Sie auch sofort die Bestätigung zurückkehren kann, ich es aus Gründen der Lesbarkeit getrennt)

Geprüft FF, Chrome und IE

+0

Ihre Lösung hat für mich funktioniert, vielleicht, weil ich den Href-Link von PHP wiedergegeben habe. Vielen Dank! – Daydah