2011-05-02 61 views
0

在我的Rails 3應用程序,我有以下形式:爲什麼點擊禁用的提交按鈕只能在Internet Explorer 8中提交表單?

<%= form_tag("/lounge/add_new_message", :id => "new_message_form", :remote => true) do %> 
    <%= text_area_tag("new_message_area", nil, :maxlength => 1000) %> 
    <%= submit_tag("Send", :id => "new_message_button", :disabled => true) %> 
<% end %> 

的按鈕在頁面加載禁用。

但是,當在Internet Explorer 8中單擊禁用的按鈕時,表單將被提交。在Firefox 4和Chrome 10中,表單未提交。

添加以下的JavaScript來驗證按鈕確實禁用:

$('form').submit(function() { 
    alert($('#new_message_button').attr("disabled")); 
}); 

,它確實在提示框顯示「真」。

我試着創建一個最小的例子來展示這個動作,但沒有成功。

什麼可能是這種奇怪的行爲的原因?

回答

2

這似乎是IE8中的某種錯誤。我無法使用Christian的解決方案,因爲我的應用程序中的另一個腳本只允許我發出一個提交,並且我必須等待服務器的響應才能提交另一個(Christian的案例永遠不會發生)。所以我通過不使用提交按鈕來解決問題,而是使用普通按鈕並調用JavaScript方法(也使用JQuery)。

 function deleteButtonClicked(button){ /*pass button reference*/ 
      if(button.disabled == false){ /*only do something when button is enabled*/ 
      $('#action').val("delete"); /*in case of multiple submit buttons, indicate which button is used*/ 
      $('#MyForm').submit(); /*call the form-submit manually*/ 
      } 
     } 

例如,使用「onclick」參數觸發您的腳本。

<form name="MyForm" ...etc etc...> 
    <input type="button" name="delBtn" value="Click here to delete" onclick="deleteButtonClicked(this)"> 
    </form> 

希望這會有所幫助。

0

嘗試在提交事件時將返回false。例如:

$('form').submit(function() { 
    return false; 
}); 

希望幫助!

0

我想知道 - 這可能是由於遙控窗體上按鈕上的'onclick'事件嗎?禁用的按鈕仍然是「可點擊的」,它可能會傳遞給表單提交功能。