【问题标题】:onclick Button Event with Confirm Dialog Box带有确认对话框的 onclick 按钮事件
【发布时间】:2016-01-22 03:43:18
【问题描述】:

此代码来自 PHP 软件(使用 Smarty 模板引擎),它可以工作:

    <input type=\"button\" class=\"btn btn-primary\" value=\"{$LANG["phrase_send_email"]}\" onclick=\"ms.edit_submission_page_send_email($submission_id); this.disabled=true;\" />";

用户点击按钮,软件将:

  • 向收件人发送电子邮件
  • 该按钮已禁用,以防止意外点击多次发送多封电子邮件

我希望它做更多:添加一个弹出确认对话框。目的是通过在发送电子邮件之前阅读确认对话框中的短信来提醒人们先做某事。

所以如果用户点击确定:

  • 执行按钮功能
  • 禁用按钮

或者如果用户取消:

  • 对话框取消并且不执行电子邮件功能。返回屏幕。

有很多 JavaScript if else/confirm 示例。但我是 JavaScript 新手,不知道 ms.edit_submission_page_send_email($submission_id) 如何融入 JavaScript 世界。

如何将所有这些放入一个 JavaScript 函数中?

【问题讨论】:

    标签: javascript php smarty


    【解决方案1】:

    试试这个方法。

    <input type=\"button\" class=\"btn btn-primary\" value=\"{$LANG["phrase_send_email"]}\" onclick=\"{literal}return checkValidMailSend(this, $submission_id){/literal}\" />";
    
    {literal}
    <script>
    function checkValidMailSend(this, submissionid) {
        if(!confirm("Are you sure to send mail?")) {
            return false;
        }
        else {
            ms.edit_submission_page_send_email(submissionid);
            this.disabled=true;
        }
    }
    </script>
    {/literal}
    

    【讨论】:

    • 非常感谢您的贡献!您的代码非常接近(除非我设置错误)。我点击按钮,它会报告:ReferenceError: checkValidMailSend is not defined onclick()。然而,作为一个实验,我从代码中删除了this。对话框提示并且一切正常,除了按钮没有禁用。我删除了this.disabled=true; 并将其替换为document.getElementById("EmailButton").disabled = true; 并将id="EmailButton" 插入到输入元素中。所有作品。任何想法为什么this 在这种情况下不起作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 2015-11-16
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多