我正在创建一个用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();
};
答案 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()
,这可能会导致问题。