无法在Firefox上使用Javascript提交表单

时间:2015-07-07 09:48:05

标签: javascript html forms firefox form-submit

我正在创建一个用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 id="statementSelect" name="statementSelect" class="select-miles select-miles-medium spacing-right-10" onchange="getStatementDetails()">

编辑: 我已阅读建议的帖子并尝试过。还是行不通。 功能最新状态:

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();
};

2 个答案:

答案 0 :(得分:7)

评论部分已满,可能是用户看不到正确的答案。 @spuyet说这是解决方案:

Javascript form.submit() not working in Firefox

似乎firefox没有发送没有任何按钮的表单。如果您的代码中包含提交按钮,则必须正常工作。

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

我认为这可以解决你的问题。

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

答案 1 :(得分:3)

如果您想提交表单,则需要提交表单中的提交按钮,否则您需要使用form data api

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

你可以轻松地在html中编写表单,而不是使用javascript动态创建表单(除非有理由你没有进入,为什么你需要这样做)

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

还值得一提的是,您应将提交按钮命名为submit,因为如果您在任何时候需要preventDefault(),这可能会导致问题。