提交JavaScript无法正常工作的Codemirror数据
如何避免在使用Codemirror和使用JavaScript提交表单时需要提交两次表单。发生的情况是,我在Codemirror文本区域中所做的任何更改都会临时存储在另一个文本区域中(它没有名称或ID)。如果我两次单击“提交”按钮,将发送正确的数据,但我希望避免必须单击两次。以下是我提交表单的源代码:提交JavaScript无法正常工作的Codemirror数据,javascript,html,forms,codemirror,Javascript,Html,Forms,Codemirror,如何避免在使用Codemirror和使用JavaScript提交表单时需要提交两次表单。发生的情况是,我在Codemirror文本区域中所做的任何更改都会临时存储在另一个文本区域中(它没有名称或ID)。如果我两次单击“提交”按钮,将发送正确的数据,但我希望避免必须单击两次。以下是我提交表单的源代码: var ajax; var formData = new FormData(); var fileUpload = false; for (i = 0; i < e.elements.leng
var ajax;
var formData = new FormData();
var fileUpload = false;
for (i = 0; i < e.elements.length; i++)
{
if (e.elements[i].type == "submit")
{
if (submitname == e.elements[i].name)
{
if (submit != null && submit.disabled)
submit.disabled = false;
submit = e.elements[i];
submit.disabled = true;
formData.append(e.elements[i].name, e.elements[i].value);
}
}
else if (e.elements[i].type == "radio" || e.elements[i].type == "checkbox")
{
if (e.elements[i].checked)
formData.append(e.elements[i].name, e.elements[i].value);
}
else if (e.elements[i].type == "file")
{
abortButton.disabled = false;
var file = document.getElementsByName("file")[0].files[0];
var maxSize = 1024;
var maxSizeBytes = 1048576 * maxSize;
formData.append("archivo", file);
fileUpload = true;
}
else
{
//alert(e.elements[i].type + e.elements[i].name + e.elements[i].class + e.elements[i].value);
if (e.elements[i].name == 'code')
{
alert(e.elements[i].type + e.elements[i].name + e.elements[i].value + e.elements[i + 1].value);
formData.append(e.elements[i].name, e.elements[i].value);
//formData.append(e.elements[i].name, e.elements[i].value + e.elements[i + 1].value);
}
else
formData.append(e.elements[i].name, e.elements[i].value);
}
}
formData.append("javascript", "javascript");
status = e.elements[0].value.split('/').reverse()[0] + "-status";
ajax = new XMLHttpRequest();
if (!fileUpload)
{
ajax.addEventListener("load", manageLoad, false);
ajax.addEventListener("error", manageError, false);
}
else
{
ajax.upload.addEventListener("progress", manageProgress, false);
ajax.addEventListener("load", _manageLoad, false);
ajax.addEventListener("error", _manageError, false);
ajax.addEventListener("abort", _manageAbort, false);
globalAjax = ajax;
}
ajax.open("POST", e.action);
ajax.send(formData);
return false;
var-ajax;
var formData=new formData();
var fileUpload=false;
对于(i=0;i
注意。这行代码:if(e.elements[i].name=='code')
确定元素是Codemirror文本区域
我正在寻找一个非jQuery的解决方案。谢谢。 您可能想考虑使用<代码> c.gtDoc().GETValue()<代码>,而不是直接从DOM元素读取值(<代码> Element [I]值)<代码> >
(
cm
是对随后实例化的CodeMirror对象的引用,如var cm=CodeMirror(…)
)当我启动CodeMirror对象时,我甚至没有存储对它的引用。有时我有多个CodeMirror对象,所以现在我所要做的就是给每个CodeMirror文本区域一个数字作为ID,这样我就可以使用cmArray[e.elements[I].ID].getDoc().getValue()
。非常感谢你的帮助。我会尽快给你赏金的。