さて、専門家に電話する時間です:これを正しく機能させる方法を誰かに教えてもらえますか?!
背景:PHP Webフォームがあり、クライアントには車の種類などのドロップダウンフィールドがあり、そのドロップダウンの値をクリックすると、その選択に固有のフィールドセットが表示されます。クライアントはすべてのセクションに必須フィールドを持つことができますが、もちろんすべてのフィールドセットが常に表示されるわけではないため、フィールドにWxHがない場合、つまり現在表示されていない場合は、必須/検証フィールドフラグを無視しますが、WxH>0の場合、プロセスを停止し、エラーメッセージを表示します。
発生すると思われることは次のとおりです 。jsonは、必要に応じてフラグが付けられたすべてのフィールドを収集します。
[var fieldList = <?php echo "new Array(". trim(json_encode($reqFlds), '[]').")"; ?>;]
ユーザーが送信ボタンをクリックすると、json配列に以下の関数が渡されます。これにより、必須としてマークされたフィールドの幅と高さが> 0であるかどうかを判断する必要があります。これは、フィールドが現在画面に表示されていることを意味します。必須フィールドに入力するまでフォームを送信しないでください。メッセージが表示されます。
FBを使用すると、ループを1回通過し、isVisible()をチェックし、「returnblankFields;」に移動することがわかります。そして停止します。
私はこれを金曜日になるまでチョークで書きますが、実際のスクリプトを追加するのをどのように逃したのかわかりません。これで、誰も応答しなかった理由がわかります。
function checkRequired(fieldList) {
var field = null,
blankFields = [],
listText = [], listItem = [], fieldId = [], label = [];
for (var i = 0; i < fieldList.length; i++) {
listText = fieldList[i];
listText = listText.substring(1, listText.length - 1);
listItem = listText.split("||");
fieldId = listItem[0];
label = listItem[1];
field = document.getElementById(fieldId);
if (isVisible(field) && isBlank(field)) {
blankFields.push(label);
}
return blankFields;
}
function isVisible(field) {
if (field.offsetWidth == 0 || field.offsetHeight == 0) return true;
}
function isBlank(field) {
if ((field.type == "text" || field.type == "textarea") && field.value == "") return true;
if (!(field.checked || field.selected || field.selectedIndex > -1)) return true;
return false;
}
if (blankFields.lentgh > 0 || blankFields.lentgh == 0) {
displayError(blankFields);
return false;
} else {
return true;
}
}
function displayError(blankFields) {
var Errmsg = "The must fill in the following fields in order to save your request:\n\n";
for (var i = 0; i < blankFields.length; i++) {
Errmsg += blankFields[i] + "\n";
alert(Errmsg);
}
}
どんな助けでも大歓迎です。
注:「blankdFields.push(lable);」というifステートメントには戻りません。isVisible関数チェックを実行した後