2015-06-12 21 views
1

我覺得我已經四處尋找這個問題的答案,但是大多數回覆都非常黑客:涉及通過AJAX彈出的JavaScript,重定向以及其他方式修改DOM。在一個<input>標籤中使用javascript和PHP?

我想要做的是當用戶提交文檔(javascript)並通過郵件(php)提交郵件時,使提交按鈕消失。我的代碼如下:

<form action="" method="post"> 
... 
<input onclick="removeElements()" id="subButton" class="submit" name="submit" type="submit" value="submit"> 

php mail函數在同一個文檔中。

這裏是removeElements()函數:

var el = document.getElementById("subButton"); 
el.remove(); 
document.getElementById("thankYouMessage").setAttribute("style", "display:block"); 

的提交功能作品,未經JavaScript調用,但是當我添加的onclick = 「removeElements()」一部分,那麼JavaScript部分開始工作,但PHP不再執行。

我知道還有其他方法可以做到這一點,但在這種情況下,我真的很好奇它爲什麼不按我的計劃工作。通過刪除提交按鈕,我是否實際上殺死了孩子PHP過程中(或預) - 執行?

謝謝!

+0

,因爲你只是刪除了DOM,所以沒有提交的事件嗎?如果是這樣,我認爲將'el.remove();'更改爲'el.style.display =「none」'來進行測試。 –

+0

我想我應該提到我嘗試了所有這些CSS技巧來禁用ID的可見性。他們不工作。我覺得他們刪除了這個按鈕,但之後它會在幾分之一秒後回來。 因此,按鈕不會消失,並且電子郵件不會被髮送。我會再看看它是否可以用更多相關信息來更新上述內容。 – ranvel

回答

2

如果您添加onclick您將不得不手動提交提交。

另一種選擇是在表單標籤上添加您的javascript調用代碼onsubmit="removeElements()"。通過這種方式,它會執行提交

相關question here

+0

我喜歡這個 - 我不知道onsubmit事件監聽器。我覺得這是進步,但它對我沒有用。 – ranvel

2

不要刪除按鈕後,執行代碼,而不是設置它的風格visible: hiddendisplay: none。這樣它將仍然在文檔中,並將工作,它不會顯示。

0

當您發送的形式重新加載你的頁面,所以我建議:

  • 使用Ajax,只刪除響應按鈕,或
  • 不會產生按鈕時重新加載頁面。

的Jquery Ajax的例子:你可以在這裏看到他們api.jquery.com/jquery.ajax/

問候。

0

您可以簡單地使用JQuery爲您提供的.hide功能。使用非常簡單,非常乾淨。

例1使用JQuery:

$("#FormID").submit(function(e) 
{ 
    e.preventDefault(); 
    // Hide button 
    $("#subButton").hide(); 
    // Display thank-you message 
    $("#thankYouMessage").css("display", "block"); 
}); 

例2使用JQuery:

$(document).ready(function() { 
    $(".submit").click(function() { 
     $("#subButton").hide(); 
     $("#thankYouMessage").css("display", "block"); 
     return false; 
    }); 
}); 
相關問題