Почему нажатие отключенной кнопки отправки отправляет форму только в Internet Explorer 8? - PullRequest
0 голосов
/ 02 мая 2011

В моем приложении на 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 ]

2 голосов
/ 18 июля 2011

Кажется, это какая-то ошибка в IE8.Я не мог использовать решение Кристиана, потому что другой скрипт в моем приложении позволяет мне выдать только одну отправку, и мне нужно ждать ответа сервера, чтобы отправить другую (что в случае с Кристианом никогда не произойдет).Поэтому я решил проблему, не используя кнопку submit, а обычную кнопку и вызвав метод 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 голосов
/ 02 мая 2011

Интересно - это может быть связано с событием «onclick» на кнопке в удаленной форме?Отключенные кнопки по-прежнему «кликабельны» и могут передавать их в функцию отправки формы.

0 голосов
/ 02 мая 2011

Попробуйте добавить return false в событие отправки.Например:

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

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...