2011-03-22 49 views
0

我写PreSaveAction(的JavaScript表单验证):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; 

} 

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; 
} 

上面我所观察到的是它不验证脚本getTagFromIdentifierAndTitle功能这两个字段在一起,我正在使用和运营商。

我是否在脚本中做错了

请帮我解决这个问题。

在此先感谢

+1

我们需要查看'getTagFromIdentifierAndTitle'函数的代码,或者至少知道它返回的是什么 - 它是实际的表单元素吗?还有你的意思是“不验证这两个领域”?你只填写一个,然后进入'确认'? – 2011-03-22 15:36:07

+0

@Shadow Wizard添加完整的代码,包括getTagFromIdentifierAndTitle函数,你是对的,我填写一个字段仍然可以确认吗? – Jam 2011-03-22 15:56:17

+0

看到我的答案。 :) – 2011-03-22 16:03:23

回答

1

,如果你想测试失败如果值的要么都是空的,你想要的或财产:||

这将确保它们都是非空的。

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; 
+0

它仍然没有验证多行字段 – Jam 2011-03-22 15:19:35

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 
+0

是的,我想这两个字段都是必需的,我已经更新了顶部的完整代码片段。我认为第一次验证,第二次验证不是 – Jam 2011-03-22 15:33:36

+0

第一次第二次是什么意思?你真的是指你在不同的跑步中得到不同的结果吗? Like Shadow Wizard说:你应该向我们展示'getTagFromIdentifierAndTitle'。 – paztulio 2011-03-22 15:46:36

+0

已更新getTagFromIdentifierAndTitle函数 – Jam 2011-03-22 15:57:01

3

它往往是最好使用“===”而不是“==”,因为其包括类型检查为好。

+1

确实,当您达到50个声望时,请发布评论等具体问题或答案。 :) – 2011-03-22 16:02:59

+0

@Shadow:真的,我已经适时帮助他。 :-) – 2011-03-22 16:40:20

+0

@Andrzej - 欢呼声,还有一个去..:D – 2011-03-22 17:52:16

2

您有多个具有相同ID的元素,这只会导致函数返回第一个元素。

具有唯一的ID为每一个元素,然后在第二行更改为类似:

var myvar = getTagFromIdentifierAndTitle("TextArea", "txtDescription", "Description"); 

假设你现在有id="txtDescription"到textarea元素。

另外,您可以将同一个分配给多个元素,但不能看出为什么不能给出不同的ID。