dojo Javascript表单.submit()在Firefox中不起作用

h22fl7wq  于 2022-12-16  发布在  Dojo
关注(0)|答案(4)|浏览(342)

关于hereherehere以及其他地方有几个问题/答案,但它们似乎都是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();
    }

除了document.forms[formName].submit()之外,我还尝试了formObject.submit()--两个都能在Chrome上运行,但在Firefox上都失败了。我不知道为什么这个不起作用--我跟踪了JS并看到document.forms[formName].submit()执行--没有出现异常,但没有任何东西进入服务器。
有人能指出为什么Firefox不提交此表单,以及我如何修复它吗?

tzxcd3kk

tzxcd3kk1#

Firefox希望,当你提交一个表单时,你至少有一个可用的提交按钮,这意味着应该有这样的内容:

<button type="submit">Click me</button>

或:

<input type="submit" value="Click me" />

当你在代码中使用第一个选项时,它不会起作用(因为你在提交表单之前去掉了所有的按钮);当你使用第二个选项时,它会起作用,在Firefox中也是如此。http://jsfiddle.net/q9Dzc/1/

bt1cpqcv

bt1cpqcv2#

form.submit()不能在Firefox上运行,但可以在其他浏览器上运行时,我也有过类似的行为。只需确保表单中的所有按钮都包含type="button"

mdfafbf1

mdfafbf13#

对于那些在提交Firefox时页面位置发生改变/重新加载时遇到问题的人,你需要把你的重定向代码放在$.post回调函数中:

$(".form").submit(function(e){
    e.preventDefault();
    $.post("submit.php", {data: textData}, function(){
        history.go(-1);
    });
    return false;
});
6jjcrrmo

6jjcrrmo4#

如果你的表单有一个“input [type=button]”和“button”的混合集合,submit()的JavaScript有时候对“input [type=button]”不起作用。

相关问题