Форма jQuery submit() не работает в IE6?

Я хочу отправить с использованием jquery, как показано ниже;

$("#formid").submit();

Он отлично работает во всех браузерах, кроме IE6.

Как заставить это работать в IE6??

8 ответов

Решение

У вас наверное есть <input name="submit" /> где-то в вашей форме, которая переписывает функцию "отправить" формы в IE.

Редактировать:

Я тестировал в некоторых других браузерах. Последние версии всех основных браузеров, похоже, подвержены этой проблеме.

  • IE - все версии
  • Firefox 4+
  • Chrome хотя бы начиная с версии 12
  • Опера хотя бы с версии 11

Итог: Никогда не называйте ваши входные данные "submit" или любым другим свойством по умолчанию или методом элемента формы (например, "action" или "reset") . Смотрите MDC для полного обзора.

У меня была похожая проблема, когда я собирался отправить форму через A-элемент. Я установил атрибут href на "javascript:;" позволить основному сценарию jQuery обрабатывать фактическую отправку, но в IE6 это не сработает.

Основной скрипт jQuery:

$(".submitLink").click(function(){
$(this).parent()[0].submit();
$(this).addClass("loading");
});

Моим решением было изменить атрибут href с "javascript:;" на "#".

Вы могли бы попробовать $("#formid").trigger("submit")Хотя я сомневаюсь, что это даст вам другой результат.

У меня недавно была похожая проблема, когда я создавал "псевдо-форму" в форме сервера ASP.NET (поэтому я не мог использовать другой тег формы), которую я хотел опубликовать в другом домене без необходимости писать код на стороне сервера, чтобы сделать удаленный пост. Простой ответ - создайте форму на лету и отправьте ее. Работает в хороших браузерах...

После некоторых испытаний и испытаний я понял, что IE не будет работать должным образом (что удивительно), если отправляемая форма не будет добавлена ​​в DOM. Итак, это было мое решение. Я надеюсь, что это поможет некоторым из вас. Пожалуйста, имейте в виду, что все мои входные данные и моя отправка были в одном контейнере. ".post-to" - это скрытый ввод с URL.

$(".post-form").click(function(ev) {

    var postto = $(this).siblings(".post-to").val();    
    var form = document.createElement("form")
    $(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", postto).attr("method", "post").attr("enctype", "multipart/form-data");

    $(this).siblings("input:text").each(function() {
        $(form).append($(this).clone());
    });

    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);

    return false;
});

В конце концов, это работает удовольствие.

Не забудьте вернуть ложь; если вы на бирке

Добавить button в вашей форме с type="submit"

Ссылка

Просто добавьте

window.setTimeout(function(){
    $("#formid").submit();
}, 300);
...

$('.bt_ok').bind('click', function() {
    $('#form_autosuggest').submit();
    return false;
});

...

Добавить после: return false; для IE6

Другие вопросы по тегам