Codemirrorを使用してJavaScriptでフォームを送信するときに、フォームを2回送信する必要を回避するにはどうすればよいですか。何が起こるかは、私がCodemirror Textareaで行った変更は、一時的に別のTextareaに保存されます(名前やIDはありません)。送信ボタンを2回クリックすると正しいデータが送信されますが、2回クリックする必要はありません。ここに私のソースコードは、フォームを送信する:JavaScriptでCodemirrorデータを正しく送信できない
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;
NBです。このコード行:if (e.elements[i].name == 'code')
は、その要素がCodemirror Textareaであると判断します。
私は非jQueryソリューションを探しています。ありがとう。
私はCodeMirrorオブジェクトを開始したとき、私もそれへの参照を格納していませんでした。私は時には複数のCodeMirrorオブジェクトを持っているので、それぞれのCodeMirror TextareaにIDとして数字を与えるだけで、cmArray [e.elements [i] .id] .getDoc()。getValue() 'を使うことができます。ご助力ありがとうございます。私にできるだけ早くあなたに恩恵を与えます。 –