2013-03-22 3 views
5

Mein Formular hat derzeit zwei Senden-Schaltflächen. Eine für Search und die andere für eine Mark Complete Funktion. Ich muss NUR ein Bestätigungsdialogfeld anzeigen, wenn die Schaltfläche "Mark Complete" geklickt wird, um das Formular mit dieser Validierung zu übergeben. Kann man das erkennen? Im Moment habe ich die unten confirmComplete Funktion:Javascript Verwendung Dialogfeld bestätigen onSubmit mit zwei Senden-Schaltflächen auf JSP

function confirmComplete() { 
alert("confirmComplete"); 
var answer=confirm("Are you sure you want to continue"); 
if (answer==true) 
    { 
    return true; 
    } 
else 
    { 
    return false; 
    } 
} 

Jede mögliche Hilfe würde geschätzt!

+0

können Sie nur JavaScript verwenden - stellen Sie die vorträgt Taste Tasten werden regelmäßig type = „button“ jedes Set Onclick auf einen anderen Funktion und wenn Sie das Formular senden möchten, verwenden Sie einfach javascript: [form_element] .submit(); – Adidi

+0

Ich muss sie als type = "submit" aufgrund anderer Funktionalität behalten, die an Ort und Stelle gesetzt wurde. – Richard

Antwort

24

Stellen Sie das onclick Attribut der "Mark Complete" Taste, um diese die confirmComplete Funktion aus dem Formular

+0

Danke, das funktioniert. – Richard

1

Sie müssen die Veranstaltung von dem Klick auf den Knopf und nicht die Übermittlung des Formulars tun. Es gibt keinen Crossbrowser-Weg, um zu wissen, was das Formular gesendet hat.

2

Sie können

onclick="return confirm('Are you sure you want to continue')" 

und entfernen. Sie können Ihre Tasten wie diese

<input type="submit" value="Search" /> 
<input type="submit" value="Mark Complete" onclick="{return confirmComplete();}" /> 

Wenn Mark komplette Schaltfläche geklickt wird dann die confirmComplete Funktion wird aufgerufen setzen und wenn der Benutzer sagt OK im Bestätigungsdialog dann nur das Formular eingereicht werden.

1

So, hier ist eine Bypass-Lösung:

<form id="frm" action="page.php" method="post" onsubmit="return onSubmit();"> 
    <input /> 
    <input type="submit" value="sub1" onclick="sub1();" /> 
    <input type="submit" value="sub2" onclick="sub1();" /> 
</form> 
<script type="text/javascript"> 
<!-- 
var frm = document.getElementById('frm'); 
function onSubmit(){ 
    return false; 
} 

function sub1(){ 
    alert('s1'); 
    frm.submit(); 
} 

function sub2(){ 
    alert('s2'); 

} 
//--> 
</script> 
+0

Interessante Lösung. Die unten gezeigte Antwortbestätigungsmethode ist der einfachste Weg, dies zu tun. – Richard

0

, wenn Sie anrufen "bestätigen()" JavaScript-Funktion Pop-up, wie Onclick = "return confirm ('? Sind Sie sicher gehen')", bestätigen Box erscheint mit der Nachricht "Sind Sie sicher, fortzufahren?" mit zwei Optionen 'ok' und 'Abbrechen'. Wenn Sie auf OK klicken, wird true zurückgegeben und die weitere Ausführung der Webseite fortgesetzt. Wenn Sie auf Abbrechen klicken, wird false zurückgegeben und die weitere Ausführung der Webseite gestoppt.

0

Ich weiß nicht für ein Eingabe-Tag, aber es hat nicht für mich mit dem Klick-Ereignis direkt auf einer Schaltfläche funktioniert. In meinem Fall wurde das Formular sofort veröffentlicht.

Hier ist eine mögliche Lösung für ein Formular mit vielen Tasten (für die nur eine von ihnen die Bestätigungsmeldung angezeigt werden muß)

Nach Ansicht:

<FORM name="F_DESTINATION_DB" id="F_DESTINATION_DB" method="POST" onsubmit="return popConfirmationBox('<?php echo LanguageControler::getGeneralTranslation("DELETE_CONFIRMATION_MESSAGE", "Deleting is an irreversible action. Are you sure that you want to proceed to the deleting?");?> ','DELETE_DB_BUTTON')"> 

Javascript (in externer Datei für die Wiederverwendung von Code):

/** 
* Display a confirmation message box to validate if we must post the page or not. 
* 
* @param message String to display 
* @param tagId String id of the tag that must display the message. 
* 
* @return Boolean (confirmation) 
*/ 
function popConfirmationBox(message, tagId){ 

    var confirmation = true; 

    if (typeof tagId === 'string' && document.activeElement.id.toUpperCase() === tagId.toUpperCase()) { 

     if (typeof message === 'string' && message.length > 0) { 

      confirmation = window.confirm(message); 
     } 
    } 

    return confirmation; 
} 

ich eine harte Zeit recht hatte diese (benötigte Menge Forschung und Tests) zu erreichen, aber der resultierende Code ist ziemlich einfach.

Standardmäßig nehme ich an, dass die Bestätigung ja ist (falls die angeklickte Schaltfläche nicht die ist, die die Nachricht anzeigen soll oder wenn der Benutzer keine gültige Nachrichtenfolge angibt).

Zusätzliche Anmerkung: Natürlich wird dieser Code nicht den Trick tun, wenn der Benutzer-Browser clientseitige Code blockieren.

ich es hoffe, dass jemand helfen,

Jonathan Eltern-Lévesque von Montreal

Verwandte Themen