JavaWeb开发中关于JS校验的代码优化问题
2017-09-04 18:08
381 查看
先来说一下场景,我们常常在提交表单中需要用到JS校验,用于在提交前保证用户输入的正确性。比如在一个登录页面中,我们需要输入用户名、密码或验证码,如果缺少其中之一,则登录不能通过,代码如下:
这样是不是看起来很简洁呢?只有两三个字段而已,当然简洁啦!试想一下,如果是一个注册页面,我们需要校验的字段就很多了,如果像上面一样写代码,岂不是要写许多相似度很高的代码?这样会造成代码高度冗余,后期维护起来也不易,每个id都需要查找。所以,不建议用这种检验方式来做JS验证。看下面的一张表格:
这张表比较复杂,需要校验的字段很多,其中还有两两组合校验的,如果用之前的校验方法,就需要写大量的相似度极高的代码,在这里我们可以使用jquery来遍历表单的方法做校验,这种情况下只需要十行左右的代码就可以了。
总结:1、 写这种代码优化的思路就是找重复。2、判断一个值是否存在,可以写成!a,不必写成:a != NULL || a != ''。
if ($("#username").val() == "" || $("#password").val() == "") { alert("用户名或密码不能为空!"); return false; }
这样是不是看起来很简洁呢?只有两三个字段而已,当然简洁啦!试想一下,如果是一个注册页面,我们需要校验的字段就很多了,如果像上面一样写代码,岂不是要写许多相似度很高的代码?这样会造成代码高度冗余,后期维护起来也不易,每个id都需要查找。所以,不建议用这种检验方式来做JS验证。看下面的一张表格:
这张表比较复杂,需要校验的字段很多,其中还有两两组合校验的,如果用之前的校验方法,就需要写大量的相似度极高的代码,在这里我们可以使用jquery来遍历表单的方法做校验,这种情况下只需要十行左右的代码就可以了。
var flag = true; // 初始化标签为true $(".validateTable tr td").each(function(){ // 开始遍历 var firstSel = $(this).children().find("option:selected").val(); // 获取第一个下拉框的值 var secondInput = $(this).children().find('.input-xlarge').val(); // 获取第二个输入框的值 if((firstSel && !secondInput) || (!firstSel && secondInput)){ // 必须保证第一个下拉框和第二个输入框都不能为空 tdHtml = '<label style="float: left" for="name" class="error">输入错误,请检查!</label>'; // 初始化错误提示 $(this).next().html(tdHtml); // 把错误提示加在当前元素的后面 flag = false; // 不符合要求的标签变为false } }) if(flag){ form.submit(); // 提交表单 }else{ closeLoading(); // 关闭正在加载 }
总结:1、 写这种代码优化的思路就是找重复。2、判断一个值是否存在,可以写成!a,不必写成:a != NULL || a != ''。
相关文章推荐
- android webView开发之js调用java代码示例
- 关于Java web 开发前后台的开发优化
- javaweb开发-js代码中的function.call的参数
- 关于安卓开发webview与js交互的问题
- javaweb开发中关于字符编码出现乱码问题的总结
- javaWeb开发中关于eclipse等ide重新部署或重启项目等原因造成上传文件丢失问题解决方案
- javaweb开发关于用户重复登录的问题
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 关于Java web开发中的中文乱码问题
- 关于java web开发中乱码问题的解决思路
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- 关于ssh框架也是javaweb开发中,action中传值的问题总计(1)
- [安卓开发]关于WebView执行js 会输出的问题解决
- webview js 与java代码交互问题(成员变量名 和方法名不能重名 啃爹啊)
- HTML开发——项目心得(关于web布局以及代码冗余问题)
- Selenium Webdriver 的使用java执行js代码 解决 ScriptEngine不支持浏览器内置对象window,document的问题
- android h5 js 混合开发解决webview加载白屏,不加载网页的问题(硬件加速网页渲染,优化体验)
- javaweb开发-js代码中keypress事件调用判断,取得keyCode值