web-dev-qa-db-fra.com

Javascript Comment utiliser la boîte de dialogue de confirmation onSubmit avec deux boutons d'envoi sur JSP

Mon formulaire a actuellement deux boutons de soumission. Un pour Search et l'autre pour une fonction Mark Complete. Je dois afficher une boîte de dialogue de confirmation UNIQUEMENT lorsque l'utilisateur clique sur le bouton "Marquer comme étant complet" pour soumettre le formulaire. Est-il possible d'identifier cela? J'ai actuellement la fonction confirmComplete ci-dessous:

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

Toute aide serait appréciée!

6
Richard

Définissez l’attribut onclick du bouton "Marquer comme terminé" sur cette 

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

et supprimez la fonction confirmComplete du formulaire

25
Carlos Blanco

Vous pouvez. Vous pouvez mettre vos boutons comme ça

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

Lorsque le bouton Marquer terminé est cliqué, la fonction confirmComplete est appelée et lorsque l'utilisateur ditOKdans la boîte de dialogue de confirmation, seul le formulaire est soumis.

3

Vous devez faire l'événement en cliquant sur le bouton et non en soumettant le formulaire. Il n’existe pas de moyen pour utiliser un navigateur Web pour savoir ce qui a été envoyé au formulaire. 

1
epascarello

Voici donc une solution de contournement:

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

lorsque vous appelez "confirm ()", une fonction javascript surgit, comme onclick = "return confirm (" Êtes-vous sûr de continuer? "), la boîte de confirmation apparaît avec le message" Êtes-vous sûr de continuer? " avec deux options 'ok' et 'cancel'. Lorsque vous cliquez sur ok, il retourne vrai et continue l'exécution de la page Web ou si vous cliquez sur Annuler, il retournera faux et arrêtera la poursuite de l'exécution de la page Web. 

0
vishal kadam

Je ne sais pas pour une balise input, mais cela n'a pas fonctionné pour moi avec l'événement click directement sur un bouton. Dans mon cas, le formulaire a été posté tout de suite.

Voici une solution possible pour un formulaire avec plusieurs boutons (pour lequel un seul d'entre eux doit afficher le message de confirmation)

Dans la vue:

<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 (dans un fichier externe pour la réutilisation du 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;
}

J'ai eu beaucoup de difficulté à atteindre cet objectif (beaucoup de recherches et de tests étaient nécessaires), mais le code résultant est assez simple.

Par défaut, je suppose que la confirmation est oui (dans le cas où le bouton cliqué n'est pas celui qui est destiné à afficher le message ou si l'utilisateur ne fournit pas une chaîne de message valide).

Note complémentaire : Bien sûr, ce code ne fera pas l'affaire si le navigateur de l'utilisateur bloque le code côté client.

J'espère que ça va aider quelqu'un,

Jonathan Parent-Lévesque de Montréal