跳过块时的Javascript
我正在使用以下代码验证表单:跳过块时的Javascript,javascript,validation,Javascript,Validation,我正在使用以下代码验证表单: if (isEmpty(email)) { alert("1"); return false; } else if (!isEmail(email)) { alert("2"); return false; } if (isEmpty(name)) { alert("
if (isEmpty(email)) {
alert("1");
return false;
}
else if (!isEmail(email)) {
alert("2");
return false;
}
if (isEmpty(name)) {
alert("3");
return false;
}
if (isEmpty(age)) {
alert("4");
return false;
}
else if (!isAge(age)) {
alert("5");
return false;
}
if (isEmpty(city)) {
alert("6");
return false;
}
if (isEmpty(comments)) {
alert("7");
return false;
}
当点击“提交”按钮时,如果前两个条件起作用(检查电子邮件变量是否为空或是否为电子邮件地址格式)-这意味着如果我将电子邮件输入保留为空或不为电子邮件地址格式,我将收到警报(1或2)
问题是,其余的验证被跳过,而我是否将另一个输入留空或不在格式中也无关紧要
另外,如果我使用第一个if块:
if (isEmpty(email)) {
alert("1");
return false;
}
else if (!isEmail(email)) {
alert("2");
return false;
}
把它移到验证块的末尾,一切正常
我猜我有一个错误的语法的地方,但我花了2个小时寻找,只是找不到它
附言
以下是我正在使用的两个验证函数:
function isEmpty(field) {
if ((field == null || field == "")) {
return true;
}
return false;
}
function isEmail(field) {
var atpos = field.indexOf("@");
var dotpos = field.lastIndexOf(".");
if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) {
return false;
}
}
函数为空(字段){
如果((字段==null | |字段==“”){
返回true;
}
返回false;
}
功能邮件(字段){
var atpos=字段索引(“@”);
var dotpos=字段.lastIndexOf(“.”);
如果(atpos<1 | | dotpos=x.length){
返回false;
}
}
结束函数并停止正在执行的其余代码
而是设置一个变量:
result="false";
并在函数末尾添加
return result;
结束函数并停止正在执行的其余代码
而是设置一个变量:
result="false";
并在函数末尾添加
return result;
return语句退出函数以运行所有验证
return语句退出函数以运行所有验证
如果将其更改为以下内容,会发生什么情况:
if (isEmpty(email)) {
alert("1");
return false;
}
else if (!isEmail(email)) {
alert("2");
return false;
}
else if (isEmpty(name)) {
alert("3");
return false;
}
else if (isEmpty(age)) {
alert("4");
return false;
}
else if (!isAge(age)) {
alert("5");
return false;
}
else if (isEmpty(city)) {
alert("6");
return false;
}
else if (isEmpty(comments)) {
alert("7");
return false;
}
我只是好奇,如果你把整个事情做成一个大的if语句,而不是把它分成几个部分,考虑到它不会改变验证过程,会发生什么
p.S.
我不确定你是否意识到,但按照你的设置方式,一旦第一个if语句返回false,在该if语句中返回false将结束你正在使用的整个方法,这意味着它不会运行它的任何其他部分。因此,如果您正在拍摄为每个空输入等显示警报,则不会以这种方式发生。如果将其更改为以下内容,会发生什么:
if (isEmpty(email)) {
alert("1");
return false;
}
else if (!isEmail(email)) {
alert("2");
return false;
}
else if (isEmpty(name)) {
alert("3");
return false;
}
else if (isEmpty(age)) {
alert("4");
return false;
}
else if (!isAge(age)) {
alert("5");
return false;
}
else if (isEmpty(city)) {
alert("6");
return false;
}
else if (isEmpty(comments)) {
alert("7");
return false;
}
我只是好奇,如果你把整个事情做成一个大的if语句,而不是把它分成几个部分,考虑到它不会改变验证过程,会发生什么
p.S.
我不确定你是否意识到,但按照你的设置方式,一旦第一个if语句返回false,在该if语句中返回false将结束你正在使用的整个方法,这意味着它不会运行它的任何其他部分。因此,如果您正在努力为每个空输入等显示警报,则不会以这种方式发生。您在isEmail函数中使用
x.length
,但未定义x
。您在isEmail函数中使用x.length
,但是x
没有定义。return
退出该函数。请显示您的“isEmail”函数的定义。我看不出代码中有任何问题,只要您知道它只在验证失败的第一个字段发出警报,而不是所有字段。您能在上发布一个实时演示吗?这将有助于了解问题所在。您是否实现了这些功能isEmail和isAge??如果是,您可以发布它们吗?return
退出该功能。请显示“iEmail”功能的定义。我看不出代码中有任何问题,只要您知道它只在验证失败的第一个字段发出警报,而不是所有字段。您可以在上发布一个实时演示吗?这将有助于了解问题所在。您是否实现了这些功能isEmail和isAge??如果是,您可以发布它们吗?但是如果电子邮件验证正常,它应该执行其他验证。我想他是这么说的。嗨,谢谢你的回答。正如Barmar所说,问题在于,当电子邮件输入得到验证时,函数仍会中断,其余的验证不会执行。在调用return之前,所有if语句都将运行,但如果电子邮件验证为OK,则应执行其他验证。我想他是这么说的。嗨,谢谢你的回答。正如Barmar所说,问题在于,当电子邮件输入得到验证时,函数仍然会中断,其余的验证不会执行。所有if语句都将运行,直到您调用return(我尝试了您的代码),它仍然会跳过除电子邮件验证之外的所有内容。谢谢你的angle tho:),你确定你的isEmai()函数中没有出错吗?因为如果它在if语句的第二个块后继续中断,我的钱就在某个地方出了问题。我尝试了你的代码,它仍然跳过所有内容,除了电子邮件验证。谢谢你的angle tho:),你确定你的isEmai()函数中没有出错吗?因为如果它在if声明的第二个区块后继续破裂,我的钱就出问题了。谢谢罗兰。你救了这一天,谢谢你,罗兰。你挽救了这一天。