javascript表单验证

时间:2011-03-22 15:07:14

标签: javascript

我正在编写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;  
}  

我上面观察到的是它没有验证我使用的字段和操作符。

我在脚本中做错了什么

请帮我解决这个问题。

提前致谢

5 个答案:

答案 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