これは私が持っているものです:
<form name="myts" method="post" action="ts.php" enctype="multipart/form-data" onsubmit="return upuInit(this)">
.
.
...bunch of inputs/buttons etc...
.
.
<input type="hidden" id="isFormValidated" name="isFormValidated" value="">
</form>
<input name="image" type="image" src="img/submit.png" border="0" onClick="validateTS(document.forms['myts']);alert('yo iam back. val: '+document.forms['myts'].value);if(document.forms['myts'].isFormValidated.value == 'true') {alert('about to submit');document.forms['myts'].submit();}">
これは、PHP 検証スクリプト (AJAX) を呼び出す「validateTS」javascript です。
function validateTS(oForm) {
var x = GetXmlHttpObject();
var errMsg = "";
var url = "validateTS.php?usr=TEST";
var retVal = false;
// PC Work Hours
var pcWH = getElement("txtpcwk");
var pcTH = getElement("txtpctrv");
var pcTot = parseInt(pcWH.value) + parseInt(pcTH.value);
url += "&pcHrs0="+pcTot;
// Build the URL above and include the "updated" values.
var selectBox = getElement("addlst");
var myOptions = [];
for (var loop=0; loop<selectBox.options.length; loop++) {
myOptions[loop] = { optText:selectBox.options[loop].text, optValue:selectBox.options[loop].value };
}
for (var loop=0; loop<myOptions.length; loop++) {
var assWH = getElement("txtasswk_"+myOptions[loop].optValue);
var assTH = getElement("txtasstrv_"+myOptions[loop].optValue);
var assWHTotal = parseInt(assWH.value) + parseInt(assTH.value);
url += "&emp"+loop+"="+assWHTotal;
}
var tsApprover = getElement("txtappr").value;
var tsClientRep = getElement("txtins").value;
url += "&tsApprover="+tsApprover+"&tsClientRep="+tsClientRep;
x.open("GET",url,true);
x.onreadystatechange=function() {
if(x.readyState == 4 && x.status == 200) {
var r = x.responseText;
var myUploadAlerts = "";
var isUploadFilesValid = false;
myUploadAlerts = validateUploadForm(oForm);
r = r.trim();
myUploadAlerts = myUploadAlerts.trim();
if (r != "" || myUploadAlerts != "") {
showMyAlerts("Please correct the following Error(s) before proceeding: <br><br>" + formatAlerts(r) + formatAlerts(myUploadAlerts), 500, block_ui_enabled);
oForm.isFormValidated.value = "false";
}
else {
oForm.isFormValidated.value = "true";
}
}
};
x.send(null);
}
現在、2 つの大きな問題があります。1) 入力画像 (フォーム内) をクリックすると、ValidateTS 関数に移動し、フォームを検証しますが、問題はありません。エラーがあればアラートを表示します。しかし、フォームに「isFormValidated」値を設定しません...理由がわかりません...フォーム値を設定するのではなく、何か他のものを返すことができるのでしょうか?
2) これは他のすべてよりも私に多くの悲しみを与えています. フォーム全体に、ユーザーが何でもアップロードできる「UPLOAD」部分があります。しかし、ボタンは 1 つしかありません (送信するフォームの画像ボタン)。したがって、画像をクリックすると、問題1で述べたように、最初にフォームが検証され、フォームが「送信」されます。ここで、javascript submit 関数を呼び出すと、フォームで「ONSUBMIT」関数が実行されると想定します (これは実行されません...そして、フォームは ts.php に送信されます)。
入力画像 (画像の送信ボタン) をクリックすると、フォームが検証され、isFormValidated が TRUE の場合は、「document.myts.submit()」を実行してから onsubmit="return upuInit(this)" を実行します。実行されます。助けてください私はこれにあまりにも多くの時間を費やしたばかりで、今は立ち往生しています.