Javascript form.submit()无法在Firefox中运行

use*_*173 16 javascript forms dojo

这里,这里这里以及其他地方有几个问题/答案,但它们都看起来特定于JQuery并且似乎不适用于此(例如,我不是创建一个新的Form对象,这是一个现有的表单,同时我根本使用Jquery.

我有一个表单,由于IE7兼容性的原因,在提交之前必须进行修改.我必须BUTTON从表单中删除所有标记,然后添加一个隐藏字段,但这都是现有HTML页面上的现有表单.此代码在IE和Chrome中正常运行,但在Firefox中不起作用(版本23和24都经过测试).

    buttonClickFunction(formName, buttonObject) {
        var formObject = document.forms[formName];
        var i = 0;

        // Strip out BUTTON objects
        for (i=0;i<formObject.length;i++) {
            if (formObject[i].tagName === 'BUTTON') {
                formObject[i].parentNode.removeChild(formObject[i]);
                i--;
            }
        }

        // Create new field
        var newField = document.createElement('input');
        newField.type = 'hidden';
        newField.id=buttonObject.id;
        newField.name = buttonObject.name;
        if (buttonObject.attributes['value'] != null) {
            newField.value = buttonObject.attributes['value'].value;
        } else {
            newField.value = buttonObject.value;
        }

        // Submit form
        formObject.appendChild(newField);
        document.forms[formName].appendChild(newField);
        document.forms[formName].submit();
    }
Run Code Online (Sandbox Code Playgroud)

除了document.forms[formName].submit() 我也尝试过formObject.submit() - 两者都在Chrome中工作但在Firefox中都失败了.我不知道为什么这不起作用 - 我已经通过JS跟踪并观察了document.forms[formName].submit()执行 - 没有异常出现,但没有任何东西进入服务器.

任何人都可以确定为什么Firefox不会提交此表单,以及我如何解决它?

g00*_*00b 20

Firefox希望,当您提交表单时,您至少有一个提交按钮,这意味着应该有以下内容:

<button type="submit">Click me</button>
Run Code Online (Sandbox Code Playgroud)

要么:

<input type="submit" value="Click me" />
Run Code Online (Sandbox Code Playgroud)

当您在代码中使用第一个时,它将无法工作(因为您在提交表单之前删除所有按钮).当您使用第二个选项时,它也可以在Firefox中使用.你可以在这个小提琴中看到:http://jsfiddle.net/q9Dzc/1/

  • 面向这个问题的任何其他人,你还需要确保元素被附加到文档正文,而不仅仅是它有一个提交按钮.如果这不起作用,请尝试这些行,请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript`form.style.display ="none"; `document.body.appendChild(形式);` (7认同)

Sim*_*nas 6

我有类似的行为,当时form.submit()在 Firefox 上不起作用,但在其他浏览器上工作。只要确保表单中的所有按钮都包含type="button".