为什么单击禁用的提交按钮仅在Internet Explorer 8中提交表单?

时间:2011-05-02 04:41:43

标签: ruby-on-rails internet-explorer-8 form-submit

在我的Rails 3应用程序中,我有以下形式:

<%= 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"));
});

它确实在警告框中显示“true”。

我尝试创建一个最小的示例来展示这一点,但没有成功。

这种奇怪行为可能是什么原因?

3 个答案:

答案 0 :(得分: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>

希望这有帮助。

答案 1 :(得分:0)

尝试在提交事件上添加 return false 。例如:

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

希望有所帮助!

答案 2 :(得分:0)

我想知道 - 这可能是由于远程表格按钮上的'onclick'事件造成的吗?已禁用的按钮仍然是“可点击的”,可能会将其传递给表单提交功能。