2012-09-08 55 views
1

我编写了一个javascript函数来验证用户输入数据是否为空。称为“isNotEmpty()”的函数标识文本框为空。但是,主函数向JSP页面返回true语句。因此表单被提交。使用数组进行javascript验证

警报号码2 & 3根据表格输入的火情。但警报No1在任何情况下都不会引发火灾。

请检查并协助我。 谢谢。

var firstName; 
var data = new Array(); 

function formEntryValidationTest() { 
    firstName = document.forms["regForm"]["firstName"]; 
    data[0] = isNotEmpty(firstName);//check the first name is empty 

    for(var i=0;i<data.length;i++) { 
     if(data[i]=="false") 
     { 
      alert("Check"); //alert No-1 
      return false; 
     } 
    } 
} 

// this is the function to check whether the input is not empty 
function isNotEmpty(obj) { 
    if(obj.value!="") { 
     alert("true"); //alert No-2 
     return "true"; 
    } 
    else 
    { 
     alert("false");//alert No-3 
     return "false"; 
    } 
} 
+1

它的工作对我来说:HTTP:// jsbin。 com/ozalan/1 /编辑 –

回答

4

你返回字符串"false"而不是布尔值false,这在JavaScript中的计算结果为“truthy”值。

更改isNotEmptyreturn true;return false;返回报表和formEntryValidationTestif (!data[i])的条件。

此外,您在isNotEmpty中检查的条件太严格。它将返回为undefinednull,这可能是您的代码无法工作的原因。将其更改为这样的事情:

function isNotEmpty(value){ 
    return value ? value.length > 0 : false; 
} 

然后通过输入值,而不是直接通过输入对象本身:

data[0] = isNotEmpty(firstName.value); 
+0

没有通常以onSubmit的形式,我调用formEntryValidationTest()函数。 – Sumer

+0

我用一些更多的建议更新了我的答案。 – Brandan

+0

快乐和等待。 – Sumer

1

您正在使用的字符串“真”和“假”,而不是布尔值真假。取下报价为:

return true 

instead of 

    return "true" 

做同样的在你的if语句:

if(data[i]==false) 
instead of 
    if(data[i]=="false") 

(注意,没有引号)

+0

我做到了,但问题仍然存在。 – Sumer