好的,是时候请来专家了:谁能告诉我如何让它正常工作?!
背景:我们有一个 PHP 网络表单,客户端有一个下拉字段,例如汽车类型,他们单击该下拉列表中的一个值,然后显示特定于该选择的字段集。客户端可能在所有部分都有必填字段,但当然并非所有字段集都始终显示,因此如果该字段没有 WxH,则意味着它当前未显示,因此忽略必填/验证字段标志,但如果 WxH > 0 ,停止进程,显示错误信息。
以下是假设发生的情况: json 收集所有标记为必需的字段:
[var fieldList = <?php echo "new Array(". trim(json_encode($reqFlds), '[]').")"; ?>;]
用户单击提交按钮,json数组传递给下面的函数,然后应该确定标记为必需的字段的宽度和高度是否> 0 如果> 0,则表示该字段当前正在屏幕上显示,因此在填写必填字段之前不应提交表单,应该出现消息。
使用 FB,我看到它通过循环一次,检查 isVisible(),转到“返回空白字段;” 并停止。
我将把它归结为星期五,不知道我是如何错过添加实际脚本的。现在我明白为什么没有人回应了:
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 函数检查之后