私のフォームには現在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;
}
}
何か助けていただければ幸いです!
「完了としてマーク」ボタンのonclick
属性をこれに設定します
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();}" />
Mark CompleteボタンがクリックされるとconfirmComplete
関数が呼び出され、ユーザーが確認で[〜#〜] ok [〜#〜]と言うとダイアログの場合、フォームのみが送信されます。
フォームの送信ではなく、ボタンをクリックしてイベントを実行する必要があります。フォームを送信したものを知るためのクロスブラウザの方法はありません。
だからここにバイパスソリューションがあります:
<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>
onclick = "return confirm( 'Are you sure to continue?')"のような「confirm()」javascriptポップアップ関数を呼び出すと、確認ボックスに「Are you sure to sure?」というメッセージが表示されます。 「ok」と「cancel」の2つのオプションがあります。「ok」をクリックすると、trueが返され、Webページの実行が続行されます。「キャンセル」をクリックすると、falseが返され、Webページの実行が停止されます。
入力タグについてはわかりませんが、ボタンで直接クリックイベントを処理することはできませんでした。私の場合、フォームはすぐに投稿されました。
多くのボタンを持つフォームの可能な解決策は次のとおりです(ボタンの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;
}
私はこれを達成するのにかなり苦労しました(多くの研究とテストが必要です)が、結果のコードはかなり単純です。
デフォルトでは、確認は「はい」であると想定しています(クリックされたボタンがメッセージを表示するためのものではない場合、またはユーザーが有効なメッセージ文字列を提供しない場合)。
補足:もちろん、ユーザーのブラウザがクライアント側のコードをブロックしている場合、このコードはトリックを実行しません。
誰かのお役に立てば幸いです
モントリオール出身のジョナサンペアレントレベスク