Javascript 如何在执行后处理之前检查所有条件
我正在开发一个实时验证功能。问题是函数中的条件的后遗症在满足最后一部分之前执行。在满足条件之前,输入验证指示器不应变为绿色,但情况并非如此 满足第三个条件后,指示灯变为绿色。在所有条件都满足之前,不应该这样做。关于我如何解决这个问题的任何建议 我的代码如下所示Javascript 如何在执行后处理之前检查所有条件,javascript,jquery,Javascript,Jquery,我正在开发一个实时验证功能。问题是函数中的条件的后遗症在满足最后一部分之前执行。在满足条件之前,输入验证指示器不应变为绿色,但情况并非如此 满足第三个条件后,指示灯变为绿色。在所有条件都满足之前,不应该这样做。关于我如何解决这个问题的任何建议 我的代码如下所示 $(函数(){ //预定义扩展 var xTension=“.com.net.edu”; $(“输入”).keyup(函数(){ //检查“@”符号的位置 var firstLetter=$(this.val().slice(0,1);
$(函数(){
//预定义扩展
var xTension=“.com.net.edu”;
$(“输入”).keyup(函数(){
//检查“@”符号的位置
var firstLetter=$(this.val().slice(0,1);
var lastLetter=$(this.val().slice(-1);
var userXs=“否”;
//用户提供的扩展
var userX=$(this.val();
userX=userX.substr(userX.indexOf(“.”+0);
if(xTension.indexOf(userX)>-1){
如果(userX!=“”){
userXs=“是”;
}否则{
userXs=“否”;
}
}否则{
userXs=“否”;
};
if($(this.val().indexOf(“@”)>-1&&(firstLetter!=“@”)&&(lastLetter!=“@”)&&&(userXs!=“No”)){
$(“#输入状态”).removeClass(“红色”).addClass(“绿色”);
}否则{
$(“#输入状态”).removeClass(“绿色”).addClass(“红色”);
}
});
});代码>
.rack{
宽度:250px;
保证金:0自动;
}
#输入状态{
宽度:1px;
高度:3倍;
与:0;
显示:内联块;
过渡:所有2;
}
输入{
宽度:230px;
高度:30px;
文本对齐:居中;
}
#输入状态。绿色,
#输入状态。红色{
宽度:235px;
背景:暗绿色;
过渡:所有2;
}
#输入状态。红色{
背景:红色;
}
实时验证
使xTension
成为数组,而不是字符串。如果用户键入user@foo.c
,userX
将是.c
,这将由indexOf()
与字符串匹配,因为没有任何东西强迫它匹配整个单词。执行此操作时,不再需要检查userX
是否为空字符串
我对代码做了一些其他简化:
不要获取第一个和最后一个字符,只需根据适当的限制测试@
的位置即可
在indexOf()之后不需要+0
不要一直调用$(this).val()
,将其放入变量中
用户为userXs
指定一个布尔变量
$(函数(){
//预定义扩展
var xTension=[“.com”、“.net”、“.edu”];
$(“输入”).keyup(函数(){
var val=$(this.val();
//用户提供的扩展
userX=val.substr(val.indexOf(“.”);
userXs=xTension.indexOf(userX)>-1;
atPos=val.indexOf(“@”);
if(atPos>0&&atPos
.rack{
宽度:250px;
保证金:0自动;
}
#输入状态{
宽度:1px;
高度:3倍;
与:0;
显示:内联块;
过渡:所有2;
}
输入{
宽度:230px;
高度:30px;
文本对齐:居中;
}
#输入状态。绿色,
#输入状态。红色{
宽度:235px;
背景:暗绿色;
过渡:所有2;
}
#输入状态。红色{
背景:红色;
}
实时验证
使xTension
成为数组,而不是字符串。如果用户键入user@foo.c
,userX
将是.c
,这将由indexOf()
与字符串匹配,因为没有任何东西强迫它匹配整个单词。执行此操作时,不再需要检查userX
是否为空字符串
我对代码做了一些其他简化:
不要获取第一个和最后一个字符,只需根据适当的限制测试@
的位置即可
在indexOf()之后不需要+0
不要一直调用$(this).val()
,将其放入变量中
用户为userXs
指定一个布尔变量
$(函数(){
//预定义扩展
var xTension=[“.com”、“.net”、“.edu”];
$(“输入”).keyup(函数(){
var val=$(this.val();
//用户提供的扩展
userX=val.substr(val.indexOf(“.”);
userXs=xTension.indexOf(userX)>-1;
atPos=val.indexOf(“@”);
if(atPos>0&&atPos
.rack{
宽度:250px;
保证金:0自动;
}
#输入状态{
宽度:1px;
高度:3倍;
与:0;
显示:内联块;
过渡:所有2;
}
输入{
宽度:230px;
高度:30px;
文本对齐:居中;
}
#输入状态。绿色,
#输入状态。红色{
宽度:235px;
背景:暗绿色;
过渡:所有2;
}
#输入状态。红色{
背景:红色;
}
实时验证
什么参数?代码段中所有函数定义中的参数列表为空..?一般注释:使用布尔值表示真/假,而不是字符串。在indexOf()
之后不需要+0
。对于xTension
@Barmar,请使用数组而不是字符串-非常感谢,我会遵守这个建议!什么论据?代码段中所有函数定义中的参数列表为空..?一般注释:使用布尔值表示真/假,而不是字符串。在indexOf()
之后不需要+0
。对于xTension
@Barmar,请使用数组而不是字符串-非常感谢,我会遵守这个建议!