在jquery中, each 方法是遍历当前的属性,
//验证时间期限 回流
$
(
'.not_success'
).
each
(
function
() {
check_time
(
this
);
});
function
check_time
(obj) {
var
val
=
$
.
trim
(
$
(obj).
val
());
if
(
val
===
""
||
val
==
null
){
$
(
'#confirm-btn'
).
prop
(
'disabled'
,
true
);
return false
;
}
else
{
if
(!
isNaN
(
val
)){
if
(
val
>
0
){
$
(
'#confirm-btn'
).
prop
(
'disabled'
,
false
);
return true
;
}
else
{
$
(
'#confirm-fenpei-btn'
).
prop
(
'disabled'
,
true
);
swal
(
''
,
'时间期限必须大于0'
,
'warning'
);
return false
;
}
}
else
{
$
(
'#confirm-btn'
).
prop
(
'disabled'
,
true
);
return false
;
}
}
}
如上代码,有多行,需要输入
我要判断 年龄这个框的值必须是数字,并且不能为空,才能提交。
但是上边的代码有个BUG.
在我点击保存的时候,提示我了,时间期限必须大于0 等提示语 但是虽然有reture false 。但是触发了 click 事件之后
,依旧提交post了。
显然,这个return false。并没有终止他的提交。
问题存在哪里呢?
问题就出在 each 这个方法。因为这个方法遍历查询查询之后,如果条件不满足 reture false 是跳出遍历。而非终止后面的代码。
So,reture false 在each里是无效的,怎么解决呢?
解决办法,用全局变量,设个状态。
var status_back = 0;
$
(
'.not_success'
).
each
(
function
() {
check_time
(
this
);
if(
check_time
(
this
)){
status_back = 1;
}
});
然后,在 post 提交前判断这个状态值
在此记录 each 方法。