1

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

根据表单的输入触发第 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";
    }
}
4

2 回答 2

4

您返回的是字符串"false"而不是布尔值false,它在 JavaScript 中计算为“真实”值。

将 return 语句更改isNotEmptyreturn true;return false;并将条件更改formEntryValidationTestif (!data[i])

另外,你入住的条件isNotEmpty太严格了。它将返回 true for undefinedand null,这可能是您的代码无法正常工作的原因。把它改成这样:

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

然后直接传递输入值而不是传递输入对象本身:

data[0] = isNotEmpty(firstName.value);
于 2012-09-08T13:33:46.293 回答
1

您正在使用字符串“true”和“false”而不是布尔值 true 和 false。删除引号,如下所示:

   return true

instead of 

   return "true"

在你的 if 语句中做同样的事情:

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

(注意没有引号)

于 2012-09-08T13:46:47.470 回答