使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
Submitting Multiple Forms with one Javascript function works in FF and no other browser
这是我从其他帖子中借来的代码,但它只适用于FF,不适用于Chrome、Opera、Safari或IE:
//Collect all forms in document to one and post it
function submitAllDocumentForms() {
var arrDocForms = document.getElementsByTagName('form');
var formCollector = document.createElement("form");
with(formCollector){
method = "post";
action = "saveSession.php";
name = "formCollector";
id = "formCollector";
}
for(var ix=0;ix<arrDocForms.length;ix++) {
appendFormVals2Form(arrDocForms[ix], formCollector);
}
document.body.appendChild(formCollector);
formCollector.submit();
}
// Function: add all elements from ``frmCollectFrom´´
// and append them to ``frmCollector´´ before returning ``frmCollector´´
function appendFormVals2Form(frmCollectFrom, frmCollector) {
var frm = frmCollectFrom.elements;
var nElems = frm.length;
for(var ix = nElems - 1; ix >= 0 ; ix--)
frmCollector.appendChild(frm[ix]);
return frmCollector;
}
我认为必须在同一页上有多个表单,以便将输入值汇总到正确的字段。即使可能,这也将是一次重大的返工。
不要指望这在所有浏览器上都能工作。提交表单后,浏览器的"浏览上下文"(因为没有更好的词)将致力于看到新请求通过,除非或直到用户按下浏览器的"停止"按钮取消它。
因此,一旦提交了一份表格,就不可能(或者更确切地说:不应该)提交任何其他表格。事实上,你可以使用FF/Gecko,这意味着他们已经实现了浏览器,这是可能的,但各种网络标准都没有规定这必须是可能的。
改写:提交表单会使Javascript执行上下文进入一种新的状态,在这种状态下,除了Firefox的情况外,新的表单提交是不可能的,因为另一个表单正在进行中。
解决方案的最佳选择是使用AJAX(或只是XmlHttpRequest)异步触发各种POST请求。使用它并不是一项大任务,但我怀疑你可能做的每件事都完全错了。为什么你首先需要执行这个任务?
相关文章:
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- jQuery$.post可以在chrome、safari中工作,但不能在FF中工作(声明成功回调函数未定义)
- 可以'我没有集中精力在FF工作
- Javascript/AAJAX在Opera中不起作用,在FF/IE/Chrome中完美工作
- jQuery不在Chrome中运行,在FF中工作
- window.location在IE9和FF中的工作方式不同
- 在<a>IE和FF不工作
- PHP/JavaScript 检查/取消检查在 FF 中工作,但在 IE 中不起作用
- Cookie不是在Safari,ios中设置的,而是在ie,ff,chrome中工作
- event.preventDefault();停止在FF工作
- 用于<脚本>在FF工作,而不是IE
- jQuery类更改未在IE中触发?镀铬/FF工作符合设计要求
- Dojo xrget-sync:true调用冻结IE UI,而FF工作正常
- InnerHTML没有'我不在FF工作
- jQuery ajaxSend()在FF工作,但不是Chrome
- jQuery不需要的排序数组输出在Chrome和IE (FF工作良好)
- 第二个Javascript表单POST在Chrome浏览器失败,在IE和FF工作
- 无法在Chrome上显示预填充的输入值- FF工作正常
- 选项OnClick在IE中不工作?但是在FF工作