Firefox不会提交JavaScript创建的表单

时间:2011-03-06 02:24:36

标签: javascript html-form firefox3.6

我需要在事件发生时创建一个带有少量输入的表单。我的代码如下。

Chrome提交正常 - 显示警告框并更改页面。

Firefox不起作用 - 警告框显示但页面保持不变。 如何让Firefox提交表单?

var idsInput = document.createElement('input');
idsInput.name = 'itemIds';
idsInput.value = ids;

var quantityInput = document.createElement('input');;
quantityInput.name = 'quantity';
quantityInput.value = 1;

var authTokenInput = document.createElement('input');
authTokenInput.name = 'authenticityToken';
authTokenInput.value = '${session.getAuthenticityToken()}';

var submitInput = document.createElement('input');
submitInput.type = 'submit';
submitInput.value = 'anything';

var form = document.createElement('form');;
form.action = '@{Checkout.setItemsQuantityHandler}';
form.method = 'POST';
form.elements[0] = idsInput;
form.elements[1] = quantityInput;
form.elements[2] = authTokenInput;
form.elements[3] = submitInput;
form.submit();

alert('after submit()'); // for debugging only

2 个答案:

答案 0 :(得分:23)

FF要求它已经在DOM中。将表单设置为display:none并将其添加到DOM中的现有元素,然后提交它。

答案 1 :(得分:6)

试试这个...

var idsInput = document.createElement('input');
idsInput.name ='itemIds';
idsInput.value = ids;

var quantityInput = document.createElement('input');
quantityInput.name ='quantity';
quantityInput.value = 1;

var authTokenInput = document.createElement('input');
authTokenInput.name ='authenticityToken';
authTokenInput.value ='$ {session.getAuthenticityToken()}';

var submitInput = document.createElement('input');
submitInput.type ='submit';
submitInput.value ='任何';

var form = document.createElement('form');
form.action ='@ {Checkout.setItemsQuantityHandler}';
form.method ='POST';
form.elements [0] = idsInput;
form.elements [1] = quantityInput;
form.elements [2] = authTokenInput;
form.elements [3] = submitInput;
document.body.appendChild(形式);
form.submit();