7

我的表单目前有两个提交按钮。一个用于功能Search,另一个用于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;
  }
}

任何帮助,将不胜感激!

4

6 回答 6

26

onclick“标记完成”按钮的属性设置为此

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

并从表单中删除 confirmComplete 功能

于 2013-03-22T21:39:32.050 回答
3

你可以。你可以把你的按钮像这样

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

单击“标记完成”按钮时,将调用该函数confirmComplete,并且当用户在确认对话框中说“确定”时,将仅提交表单。

于 2013-03-22T21:42:33.810 回答
1

您需要通过单击按钮而不是表单提交来执行事件。没有跨浏览器的方式可以知道提交表单的内容。

于 2013-03-22T21:35:39.777 回答
1

所以这是一个旁路解决方案:

<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>
于 2013-03-22T21:43:23.440 回答
0

当您调用“confirm()” javascript 弹出函数时,例如 onclick="return confirm('Are you sure to continue?')" ,确认框会出现消息“您确定要继续吗?” 有两个选项“确定”和“取消”。当您单击确定时,它返回 true 并继续执行网页,或者如果您单击取消,它将返回 false 并停止进一步执行网页。

于 2014-01-28T05:24:08.387 回答
0

我不知道输入标签,但是直接在按钮上单击事件对我不起作用。就我而言,表格是立即发布的。

这是具有许多按钮的表单的可能解决方案(其中只有一个必须显示确认消息)

在视图中:

<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

于 2015-07-22T19:59:42.150 回答