我正在编写
PreSaveAction()
的JavaScript表单验证,如下所示:
function PreSaveAction() {
var number1 = getTagFromIdentifierAndTitle("INPUT", "TextField", "Quantity");
//var ddl1 = getTagFromIdentifierAndTitle("select", "DropDownChoice", "Is Product Completed");
var myvar = getTagFromIdentifierAndTitle("TextArea", "TextField", "Description");
//if (dropdown1.value == "Yes" && date1.value == "")
if (number1.value == "" || myvar.value === "") {
alert("Please fill all the Required Fields");
return false; // Cancel the item save process
}
if (confirm("Do you want to continue with this information?") == true) {
alert("Successfully Submitted");
return true; // OK to proceed with the save item
}
return false;
}
以及
getTagFromIdentifierAndTitle
函数的脚本
function getTagFromIdentifierAndTitle(tagName, identifier, title) {
var len = identifier.length;
var tags = document.getElementsByTagName(tagName);
for (var i = 0; i < tags.length; i++) {
var tempString = tags[i].id;
if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
return tags[i];
}
}
return null;
}
我在上面观察到的是,它没有同时验证我使用 and 运算符的两个字段。
我在脚本中做错了什么吗?
请帮我解决这个问题。
提前致谢
通常使用“===”而不是“==”更好,因为这也包括类型检查。
您有多个具有相同 ID 的元素,这会导致您的函数仅返回第一个元素。
每个元素都有唯一的 ID,然后将第二行更改为:
var myvar = getTagFromIdentifierAndTitle("TextArea", "txtDescription", "Description");
假设您现在有
id="txtDescription"
到文本区域元素。
您也可以将相同的 class 分配给多个元素,但看不出有什么理由不能给出不同的 ID。
如果您希望测试在任一为空时失败,则需要 OR 属性:||
这将确保它们都非空。
var number1 = getTagFromIdentifierAndTitle("INPUT","TextField","Quantity"); (TextBox)
var Desc1 = getTagFromIdentifierAndTitle("TextArea","TextField","Description"); (MultiLine)
if (number1.value == "" || Desc1.value == "") //Changed here
{
alert("Please fill all the Required Fields");
return false; // Cancel the item save process
}
return true;
if (number1.value == "" || Desc1.value == "")
{
alert("Please fill all the Required Fields");
return false; // Cancel the item save process
}
return true;
您想在此处使用或。因为你想同时设置两个字段,对吗?
if (number1.value != "" && Desc1.value != "")
也是可以的。
要正确验证号码:
number1.length && !isNaN(Number(number1.value)); //Number("") returns 0, not NaN
Javascript表单验证非常简单,你可以查看下面的网址
https://simplifyscript.com/tutorials/form-validation-html-and-javascript/