Подтвердить что ты не робот

IE11-Only Submit Bug

У меня есть форма на странице, что-то простое:

<form action="form/submit" method="post">
    <button type="submit">Submit</button>
</form>

Он работает в каждом браузере, включая более старые версии IE, но в IE11 он терпит неудачу, при этом вкладка застревает в непрерывном цикле загрузки, никогда не меняя страницу "спасибо" после отправки. ОДНАКО, если я открою консоль, она работает.

Я знаю о проблемах console.log, которые IE имеет, и уже использую:

if (!window.console) {
    console = {
        log: function() {}
    };
}

чтобы избежать этого, что, кажется, все в порядке (как упоминалось, каждый другой IE работает). Любое понимание того, где может возникнуть проблема?

4b9b3361

Ответ 1

Проблема возникает, когда форма имеет только элементы ввода без атрибута name (или без входных элементов). Я нашел ссылку на ошибку здесь, хотя это также происходит в режиме рабочего стола, а не только в режиме метро, ​​как заявляет ссылка:

http://connect.microsoft.com/IE/feedback/details/807447/ie-11-metro-version-submitting-form-fails-if-input-tag-has-no-name-attribute

Исправление состоит в том, чтобы создать поле фиктивного <input type="hidden" name="dummy" value="something"> (с именем и значением) перед отправкой формы.

Ошибка происходит во всех режимах совместимости, предлагаемых IE11.

Ответ 2

Я просто потратил слишком много времени на эту ошибку. Сумасшедшая часть: IE11 позволяет отправить форму, если у вас есть инструменты dev (f12). Это то, что я поставил перед кнопкой отправки:

<input type="hidden" name="ie11sux" id="ie11sux" value="<?php echo md5(microtime()."ie11sux"); ?>"/>

Ответ 3

Это ошибка в IE11. Вы можете исправить это, если добавить к нему атрибут имени, например:

<button type="submit" name="foo" ...

Ответ 4

Форма без именованного элемента приведет к бесконечному циклу для отправки на IE11 + W8.1. Чтобы исправить это, просто добавьте к кнопке имя атрибут :

<form action="form/submit" method="post">
  <input type="submit" name="cm" value="Submit">
</form>

Ответ 5

Это напрямую не связано с вопросом OP, но это проблема с представлением только для IE:

Если вам пришло событие form.prop('disabled', true) во время события отправки, другие браузеры по-прежнему будут отправлять данные формы, но IE не будет - он отправит пустой тело запроса.

Ответ 6

Для меня у меня были пустые скрытые поля, которые были отмечены как обязательные. Довольно глупо, но это было решение, которое сработало для меня.

Ответ 7

Для IE11 есть:

event.returnValue = false;

Проверка существования event.preventDefault предотвращает возможную ошибку:

event.preventDefault ? event.preventDefault() : (event.returnValue = false);

Ответ 8

Ваша проблема вызвана проблемой с .net 4 на стороне сервера. Пожалуйста, прочтите следующее: 'WebForm_DoPostBackWithOptions' undefined в представлении IE11

Вы можете включить функцию отладки IE и попробовать отправить, вы можете увидеть ошибку: WebForm_DoPostBackWithOptions

Я исправил аналогичную проблему с отправкой для IE11 с помощью патча: http://support.microsoft.com/kb/2836939