我在jquery 上看到的一个使用&&操作的例子(在jquery-ui 下面 demos/dialog/modal-form中),感觉不错,这是我的实现,如下:
场景:
假如我们有两个文本框需要验证非空。
代码:
代码
1
2 //validUserName validPwd 是两个div,分别显示错误信息,通常我们放在用户名和密码这两个文本框的的后面。
3
4 function register() {
5
6 var userName = $('#txtUserName').val();
7 var pwd = $('#txtPasword').val();
8
9 var bValid = true;
10
11 bValid = bValid && checkNull(userName, "用户名", "validUserName");
12 bValid = bValid && checkNull(pwd, "密码", "validPwd");
13
14
15 if (bValid) {
16 return true;
17 }
18 else {
19 return false;
20 }
21 }
2 //validUserName validPwd 是两个div,分别显示错误信息,通常我们放在用户名和密码这两个文本框的的后面。
3
4 function register() {
5
6 var userName = $('#txtUserName').val();
7 var pwd = $('#txtPasword').val();
8
9 var bValid = true;
10
11 bValid = bValid && checkNull(userName, "用户名", "validUserName");
12 bValid = bValid && checkNull(pwd, "密码", "validPwd");
13
14
15 if (bValid) {
16 return true;
17 }
18 else {
19 return false;
20 }
21 }
我们可以看到第11 12行, 也就是说只要 checkNull ()函数为返回假,我们开始定义的bValid 求与后也会为假。即整个函数返回假。
其实这也没有什么,我们完全可以使用if else 来解决。但是问题来了如果有很多的文本框需要验证,那是不是会需要很多的if else啊。
使用&&就没有这么麻烦了 我们完全可以在 第12行下面 写 bValid = bValid && checkNull(pwd, "邮件", "......") 等等很多都可以。
代码
function checkNull(t, n, obj) {
if (t == "") {
updateTips("忘填" + n + "了吧!",obj);
return false;
} else {
updateTips("",obj);
return true;
}
}
function updateTips(t, obj) {
var tips = $("#" + obj);
tips.text(t);
}
if (t == "") {
updateTips("忘填" + n + "了吧!",obj);
return false;
} else {
updateTips("",obj);
return true;
}
}
function updateTips(t, obj) {
var tips = $("#" + obj);
tips.text(t);
}
看起来复杂了,但是心里更清楚了。这难道就是重构的结果?
作者:管宇
欢迎转载,请标明出处。