web-dev-qa-db-ja.com

JavaScriptのJSPの2つの送信ボタンで確認ダイアログのonSubmitを使用する方法

私のフォームには現在2つの送信ボタンがあります。 1つはSearch用で、もう1つはMark Complete関数用です。 「完了としてマーク」ボタンがクリックされ、検証に合格したフォームを送信する場合にのみ、確認ダイアログボックスを表示する必要があります。これを特定することは可能ですか?私は現在以下のconfirmComplete関数を持っています:

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

何か助けていただければ幸いです!

7
Richard

「完了としてマーク」ボタンのonclick属性をこれに設定します

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

フォームからconfirmComplete関数を削除します

26
Carlos Blanco

あなたはできる。このようにボタンを置くことができます

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

Mark CompleteボタンがクリックされるとconfirmComplete関数が呼び出され、ユーザーが確認で[〜#〜] ok [〜#〜]と言うとダイアログの場合、フォームのみが送信されます。

3

フォームの送信ではなく、ボタンをクリックしてイベントを実行する必要があります。フォームを送信したものを知るためのクロスブラウザの方法はありません。

1
epascarello

だからここにバイパスソリューションがあります:

<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

onclick = "return confirm( 'Are you sure to continue?')"のような「confirm()」javascriptポップアップ関数を呼び出すと、確認ボックスに「Are you sure to sure?」というメッセージが表示されます。 「ok」と「cancel」の2つのオプションがあります。「ok」をクリックすると、trueが返され、Webページの実行が続行されます。「キャンセル」をクリックすると、falseが返され、Webページの実行が停止されます。

0
vishal kadam

入力タグについてはわかりませんが、ボタンで直接クリックイベントを処理することはできませんでした。私の場合、フォームはすぐに投稿されました。

多くのボタンを持つフォームの可能な解決策は次のとおりです(ボタンの1つだけが確認メッセージを表示する必要があります)

ビューで:

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

私はこれを達成するのにかなり苦労しました(多くの研究とテストが必要です)が、結果のコードはかなり単純です。

デフォルトでは、確認は「はい」であると想定しています(クリックされたボタンがメッセージを表示するためのものではない場合、またはユーザーが有効なメッセージ文字列を提供しない場合)。

補足:もちろん、ユーザーのブラウザがクライアント側のコードをブロックしている場合、このコードはトリックを実行しません。

誰かのお役に立てば幸いです

モントリオール出身のジョナサンペアレントレベスク