我正在编写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;
}
我上面观察到的是它没有验证我使用的字段和操作符。
我在脚本中做错了什么
请帮我解决这个问题。
提前致谢
答案 0 :(得分:3)
通常最好使用“===”而不是“==”,因为这也包括类型检查。
答案 1 :(得分:2)
您有多个具有相同ID的元素,这只会导致您的函数返回第一个元素。
每个元素都有唯一的ID,然后将第二行更改为:
var myvar = getTagFromIdentifierAndTitle("TextArea", "txtDescription", "Description");
假设您现在有id="txtDescription"
到textarea元素。
另外,您可以将相同的类分配给多个元素,但看不出有任何原因导致您无法提供不同的ID。
答案 2 :(得分:1)
如果您希望测试失败,如果值 为空,则需要OR属性:||
这将确保它们都非空。
答案 3 :(得分:0)
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;
答案 4 :(得分:0)
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