【问题标题】:Firefox jQuery form submission not workingFirefox jQuery 表单提交不起作用
【发布时间】:2012-04-11 14:45:22
【问题描述】:
var makeField = function(name, value) {
    return $('<input />').attr({
        type: 'hidden',
        name: name,
        value: value
    });
};

$('.login').on('click', function() {
    var form = $('<form />').attr('method', 'POST');

    form.append(makeField('n0', 'data1'));
    form.append(makeField('n1', 'data2'));
    form.append(makeField('n2', 'data3'));

    $(document).append(form);
    form.submit();
});

上述代码在 Safari、Chrome 和 Opera 中运行良好,但 Firefox 忽略了form.submit();。我通过在提交调用的上方和下方添加console.log('...'); 来测试上面的代码,它执行没有错误。我也试过打电话给$(form).submit();,但我得到了同样不想要的结果。

有没有人遇到过这个问题,或者有解决方案?

【问题讨论】:

  • 对 jQuery 更友好,尝试将 var form = document.createElement('form'); 更改为 var form = $("&lt;form /&gt;").attr('method', 'POST');
  • 关键部分是 jQuery 的 append() 在非元素上调用时不会执行任何操作。

标签: jquery forms firefox form-submit


【解决方案1】:

用你的新代码更新

$(function() {
    var makeField = function(name, value) {
        return $('<input />').attr({
            type: 'hidden',
            name: name,
            value: value
        });
    };

     $(document).on('click', '.login', function() {
        var form = $("<form />").attr({ method: "POST" }).append(
                makeField('n0', 'data1'),
                makeField('n1', 'data2'),
                makeField('n2', 'data3')
            );

        // just adding a callback on submit here to show it works
        form.submit(function(e){ alert("Submitting Form"); });

        $("body").append(form);
        form.submit();
    });
})

WORKING jsFiddle in FF HERE

【讨论】:

  • 感谢代码清理,但这并没有解决我的 firefox 问题。
  • 仅供参考,只是用解释对其进行了编辑,真的需要查看更多您正在做什么来确定问题,我认为这不是您的代码,而是部分代码?
  • 我修改了我的原始代码以包含您的编辑,以及它的实际外观,唯一改变的是字段的名称和值。
  • 仅供参考,主要修复将 $(document) 更改为 $("body")
  • 对于遇到此问题的其他人:事实证明,FireFox 中有一个错误导致 .submit() 在某些情况下被忽略。这是一个解决方法:var button = $("&lt;input type='submit' style='display: none'/&gt;"); form.append(button); button.trigger('click');
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多