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 работает). Любое понимание того, где может возникнуть проблема?
Ответы
Ответ 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