Javascript как использовать диалоговое окно подтверждения onSubmit с двумя кнопками отправки на JSP

моя форма в настоящее время имеет две кнопки отправки. Для Search и :

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

любая помощь будет оценили!

6 ответов


установить onclick атрибут кнопки "Mark Complete" для этого

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

и удалите функцию confirmComplete из формы


Вы можете. Вы можете положить ваши кнопки, как это

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

, когда Пометить Как Завершенную кнопка нажата, затем confirmComplete функция будет вызываться, когда пользователь говорит OK в диалоговом окне подтверждения будет отправлена только форма.


вам нужно сделать событие от щелчка по кнопке, а не отправки формы. Там нет crossbrowser способ узнать, что представил форму.


Итак, вот решение обхода:

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

при вызове функции" confirm () "javascript всплывает, например onclick=" return confirm ('вы уверены, что продолжите?") ", подтвердите, что появится окно с сообщением " вы уверены, что продолжите?"с двумя вариантами" ok " и "отмена".когда вы нажмете ok, он вернет true и продолжит дальнейшее выполнение веб-страницы или если вы нажмете отмена, он вернет false и остановит дальнейшее выполнение веб-страницы.


Я не знаю для тега input, но это не сработало для меня событие click на кнопку. В моем случае форма была отправлена сразу.

вот возможное решение для формы со многими кнопками (для которой только одна из них должна отображать сообщение подтверждения)

в виде:

<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 (во внешнем файле для повторного использования кода):

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

мне было довольно трудно достичь этого (требуется много исследований и тестирование), но полученный код довольно прост.

по умолчанию я предполагаю, что подтверждение да (в случае, если нажатая кнопка не предназначена для отображения сообщения или если пользователь не предоставляет допустимую строку сообщения).

дополнительная информация: конечно, этот код не будет делать трюк, если пользовательский браузер блокирует клиентский код.

Я надеюсь, это поможет кому-то,

Jonathan Parent-Lévesque из Монреаля