JQuery form submit() не работает в IE6?

Я хочу отправить a с помощью jquery, как показано ниже:

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

Его работа прекрасна во всех браузерах, кроме IE6.

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

Ответ 1

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

Изменить:

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

  • IE - все версии
  • Firefox 4 +
  • Chrome по крайней мере с версии 12
  • Opera по крайней мере с версии 11

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

Ответ 2

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

jQuery main script:

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

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

Ответ 3

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

Ответ 4

У меня недавно была аналогичная проблема, когда я создавал "псевдо-форму" в форме сервера 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;
});

В конце концов, это работает.

Ответ 5

Не забудьте вернуть false; если вы используете тег

Ответ 6

Добавьте button в свою форму с помощью type="submit"

Ссылка.

Ответ 7

...

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

...

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

Ответ 8

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

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