30

我想使用 jquery 提交如下;

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

它在除 IE6 之外的所有浏览器中都能完美运行。

如何让它在 IE6 中工作?

4

8 回答 8

64

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

编辑:

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

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

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

于 2009-01-15T07:38:58.253 回答
14

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

jQuery主脚本:

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

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

于 2009-03-18T14:57:33.153 回答
3

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

于 2009-01-15T07:28:32.067 回答
2

我最近遇到了一个类似的问题,我在 ASP.NET 服务器表单中创建了一个“伪表单”(所以我不能使用另一个表单标签),我想将它发布到另一个域而无需编写执行远程发布的服务器端代码。简单的答案 - 即时创建表单并提交。在良好的浏览器中工作...

经过一些试验和磨难,我意识到除非正在提交的表单已添加到 DOM,否则 IE 将无法按预期工作(真是令人惊讶)。所以,这是我的解决方案。我希望它对你们中的一些人有所帮助。请注意,我所有的输入和我的提交都在同一个容器中。“.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;
});

最终,它是一种享受。

于 2011-07-14T13:34:10.917 回答
1

不要忘记返回false;如果你在标签上

于 2009-03-18T02:19:00.107 回答
0

button在您的表单中添加一个type="submit"

参考

于 2012-09-19T19:58:03.173 回答
-1
...

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

...

之后添加:return false;对于 IE6

于 2011-12-08T10:37:42.047 回答
-1

只需添加一个

window.setTimeout(function(){
    $("#formid").submit();
}, 300);
于 2011-12-13T15:53:17.323 回答