jQuery表单submit()在IE6中不起作用?

时间:2009-01-15 06:24:46

标签: javascript jquery html internet-explorer-6

我想使用如下的jquery提交:

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

除了IE6之外,它在所有浏览器中都很完美。

如何让它在IE6中运行?

8 个答案:

答案 0 :(得分:63)

你的表单中可能有一个<input name="submit" />,它会覆盖IE中表单的“提交”功能。

修改:

我已在其他一些浏览器中测试过。所有主流浏览器的最新版本似乎都受此问题的影响。

  • IE - 所有版本
  • Firefox 4 +
  • Chrome至少从版本12开始
  • Opera至少从版本11开始

底线:永远不要将输入命名为“submit”,也不要将表单元素的任何其他默认属性或方法命名(例如“action”或“reset”)。有关完整概述,请参阅MDC

答案 1 :(得分:14)

当我要通过A元素提交表单时,我遇到了类似的问题。我把href属性设置为“javascript:;”让主jQuery脚本处理实际的提交,但它在IE6中不起作用。

jQuery主脚本:

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

我的解决方案是从“javascript:;”更改href属性到“#”。

答案 2 :(得分:3)

你可以尝试$("#formid").trigger("submit"),但我怀疑它会给你一个不同的结果。

答案 3 :(得分:2)

我最近有一个类似的问题,我在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;
});

最终,这是一种享受。

答案 4 :(得分:1)

别忘了归谎;如果你在标签上

答案 5 :(得分:0)

使用button

在表单中添加type="submit"

Reference

答案 6 :(得分:-1)

...

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

...

在IE6之后添加:return false;

答案 7 :(得分:-1)

只需添加一个

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