2016-01-22 74 views
0

此代碼是一個PHP軟件(使用Smarty的模板引擎)和它的作品:的onclick按鈕事件與確認對話框

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

用戶點擊按鈕,軟件會:

  • 發送電子郵件給收件人
  • 的按鈕被禁用,以防止多個郵件意外點擊發送不止一次

我想要它做更多:添加彈出確認對話框。目的是提醒人們在發送電子郵件之前先閱讀確認對話框中的文本信息,然後先做一些事情。

因此,如果用戶點擊OK:

  • 實行按鈕功能
  • 禁用按鈕

,或者如果用戶取消:

  • 對話框中取消並沒有電子郵件功能執行。返回屏幕。

有大量的JavaScript if else/confirm的例子。但是,我是新來的JavaScript和不知道如何ms.edit_submission_page_send_email($ submission_id)適合JavaScript的世界。

如何將一個把所有這一切都爲JavaScript函數?

回答

0

嘗試這種方式。

<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} 
+0

非常感謝您的貢獻!你的代碼非常接近(除非我設置錯誤)。我點擊按鈕,它會報告:'ReferenceError:checkValidMailSend未定義onclick()'。然而,作爲一個實驗,我從代碼中刪除了'this'。對話框提示和一切正常,除了按鈕沒有禁用。我刪除'this.disabled = TRUE;'和用'的document.getElementById( 「EmailButton」)代替它禁用= TRUE;'和插入'ID = 「EmailButton」'到輸入元件。所有作品。任何想法爲什麼'this'在這種情況下不起作用? –