无法在 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()
任何一点。
我正在创建要在 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()
任何一点。