Firefox jQuery表单提交无效

Bri*_*ham 5 forms firefox jquery ignore form-submit

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();
});
Run Code Online (Sandbox Code Playgroud)

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

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

SpY*_*3HH 5

更新了您的新代码

$(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();
    });
})
Run Code Online (Sandbox Code Playgroud)

请参阅FF HERE中的WORKING jsFiddle

  • 对于遇到此问题的其他人:事实证明FireFox中存在一个错误,导致在某些情况下忽略.submit().这是一个解决方法:`var button = $("<input type ='submit'style ='display:none'/>"); form.append(按钮); button.trigger( '点击');` (5认同)