无法在 Firefox 上从 Javascript 提交表单

Cannot submit form from Javascript on Firefox

我正在创建要在 javascript 函数中提交的表单。我将该函数绑定到 select 元素的 onchange 事件。事件在 chrome 和 firefox 中运行良好,我测试了它,它调用了函数。但问题是; chrome 提交表单,而 firefox 不提交。能否请你帮忙? 谢谢

Javascript函数:

function getStatementDetails()
{
    var stmtSelect = document.getElementById("statementSelect");
    var selectedId = stmtSelect.options[stmtSelect.selectedIndex].value;

    var stmtForm = document.createElement("form");
    stmtForm.setAttribute('method', "post");
    stmtForm.setAttribute('action', "mymiles-mystatement");

    var stmtId = document.createElement("input");
    stmtId.setAttribute('type', "hidden");
    stmtId.setAttribute('name', "statementID");
    stmtId.setAttribute('id', "statementID");
    stmtId.setAttribute('value', selectedId);

    stmtForm.appendChild(stmtId);
    stmtForm.submit();
};

select输入:

<select id="statementSelect" name="statementSelect" class="select-miles select-miles-medium spacing-right-10" onchange="getStatementDetails()">

编辑: 我已经阅读了建议的 post 并尝试了。还是行不通。 函数最新状态:

function getStatementDetails()
{
    var stmtSelect = document.getElementById("statementSelect");
    var selectedId = stmtSelect.options[stmtSelect.selectedIndex].value;

    var stmtForm = document.createElement("form");
    stmtForm.setAttribute('method', "post");
    stmtForm.setAttribute('action', "mymiles-mystatement");

    var stmtId = document.createElement("input");
    stmtId.setAttribute('type', "hidden");
    stmtId.setAttribute('name', "statementID");
    stmtId.setAttribute('id', "statementID");
    stmtId.setAttribute('value', selectedId);

    var stmtSbmt = document.createElement("input");
    stmtSbmt.setAttribute('type', "submit");
    stmtSbmt.setAttribute('name', "tryMe");
    stmtSbmt.setAttribute('id', "tryMe");
    stmtSbmt.setAttribute('value', "try submit");

    stmtForm.appendChild(stmtId);
    stmtForm.appendChild(stmtSbmt);
    stmtForm.submit();
};

评论区已满,可能用户没有看到正确答案。 @spuyet 说这是这里的解决方案:

Javascript form.submit() not working in Firefox

似乎 firefox 不会发送里面没有任何按钮的表单。如果您在代码中包含一个提交按钮,那么您的代码必须有效。

  var button = document.createElement("input");
  button.setAttribute('type', "submit");
  stmtForm.appendChild(button);

而且我认为这可以解决您的问题。

如果你解决了,请告诉我们。

如果您想提交,您需要在表单中添加一个提交按钮,否则您需要使用 form data api

<input type="submit" value="click me baby" />

您可以更轻松地在 html 中编写表单,而不是使用 javascript 动态创建它(除非您没有考虑为什么需要这样做)

您的 html 中有 select 元素,为什么不是整个表单?

还值得一提的是,您应该 将您的提交按钮命名为 submit,因为如果您需要 preventDefault()任何一点。