2013-03-22 22 views
5

Il mio modulo dispone attualmente di due pulsanti di invio. Uno per Search e l'altro per una funzione Mark Complete. Devo mostrare SOLO una finestra di dialogo di conferma quando viene cliccato il pulsante "Segna come completato" per inviare il modulo con la convalida che è stata superata. È possibile identificare questo? Al momento ho la seguente funzione confirmComplete:Javascript Come utilizzare Conferma finestra di dialogo su Invia con due pulsanti di invio su JSP

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

Qualsiasi aiuto sarebbe apprezzato!

+0

È possibile utilizzare solo javascript - impostare il pulsante sottomette ad essere pulsanti regolari type = "tasto" set ciascuno onclick a un diverso funzione e se vuoi inviare il modulo usa javascript: [form_element] .submit(); – Adidi

+0

Devo tenerli come type = "submit" a causa di altre funzionalità che sono state messe in atto. – Richard

risposta

24

impostare l'attributo onclick del pulsante "Mark Complete" per questo

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

e rimuovere la funzione confirmComplete dalla forma

+0

Grazie, questo funziona. – Richard

1

È necessario eseguire l'evento dal clic sul pulsante e non dall'invio del modulo. Non esiste un modo crossbrowser per sapere cosa ha inviato il modulo.

2

È possibile. È possibile inserire i pulsanti come questo

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

Quando Mark Complete tasto viene cliccato poi sarà chiamata la funzione confirmComplete e quando l'utente dice OK nella finestra di conferma allora solo la forma sarà presentato.

1

ecco una soluzione bypass:

<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

Soluzione interessante. Il metodo di conferma della restituzione mostrato di seguito è il modo più semplice per farlo. – Richard

0

quando si chiama "conferma()" javascript pop-up funzione, come onclick = "conferma il ritorno ('Sei sicuro di procedere')", confermare la casella viene visualizzata con il messaggio "Procedere?" con due opzioni "ok" e "cancella". Quando si fa clic su OK, si restituisce true e si prosegue con l'ulteriore esecuzione della pagina Web oppure, se si fa clic su Annulla, viene restituito false e si arresta l'ulteriore esecuzione della pagina Web.

0

Non so per un tag di input, ma non ha funzionato per me con l'evento click direttamente su un pulsante. Nel mio caso, il modulo è stato pubblicato subito.

Ecco una possibile soluzione per un modulo con molti pulsanti (per cui solo uno di essi deve visualizzare il messaggio di conferma)

Nella vista:

<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 (nel file esterno per il riutilizzo del codice):

/** 
* 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; 
} 

ho avuto un periodo piuttosto difficile da raggiungere questo obiettivo (lotto necessario di ricerca e sperimentazione), ma il codice risultante è piuttosto semplice.

Per impostazione predefinita, presumo che la conferma sia sì (nel caso in cui il pulsante su cui si fa clic non è quello destinato a visualizzare il messaggio o se l'utente non fornisce una stringa di messaggio valida).

Nota aggiuntiva: Ovviamente, questo codice non risolverà il problema se il browser utente blocca il codice lato client.

Spero che aiutare qualcuno,

Jonathan Parent-Lévesque da Montreal