【jQuery】无须id、name与class等属性,直接对表单中的所有表单项进行遍历、判断、检验
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【jQuery】无须id、name与class等属性,直接对表单中的所有表单项进行遍历、判断、检验,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3046字,纯文字阅读大概需要5分钟。
内容图文
虽然看上去好像很爽的样子,尤其在一些具有超过单行文本框<input type="text" />、多行文本框<textarea>等页面,但是,遇到一些需要特定判断的页面,你还不如设置一个id,直接通过id来取,简单方便,不用考虑遍历问题这么艰难。这种方法只是尤其使用于那些超多文本框的页面,但你又不想连用服务器语言什么aspx,jsp,php设置N个id的情况。例如,利用这个方法能够改进《【JavaScript】表单提交之前的前台处理检查三部曲》(点击打开链接),代码就不用写这么长了嘛!同时,这种方法是能够对限定表单作用,不想网上的一些方法,一旦遍历就要遍历整个页面。
一、基本目标
如下例子。如果哪个文本框的字数超标,或者为空,马上给出提示,同时这个文本框的边框颜色变红,并且告警。这里是能够对限定表单作用,无论表单以外的输入框输了写什么都不参与验证。
二、HTML布局
很简单,只是希望大家注意到,这里设置了一个div放错误信息。同时设置了一个在表单外的输入框。另外,表单内的所有输入框、多行文本框,没有任何id、name与class等属性,但我还是能够进行判断。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无ID检验</title> <script type="text/javascript" src="js/jquery-1.11.1.js"></script> </head> <body> <div id="errorMsg" style="color:#ff0000;"></div> 表单以外:<input type="text" /><br /> 表单以内: <form action="" method="post" onsubmit="return submitPreprocessing(this)"> <input type="text" /><br /> <input type="text" /><br /> <input type="text" /><br /> <textarea rows="10" cols="20" wrap="virtual"></textarea><br /> <input type="submit" value="Go!" /> </form> </body> </html>
三、jQuery脚本
1、根据onsubmit属性传递过的form表单进行检验
2、这里其实有点《【JavaScript】原生态兼容IE6的图片轮播》(点击打开链接)的分页思想。如果不符合要求的表单项告警、提交判断的布尔值设置为false之外,记得要把符合要求的表单项恢复原状。不然用户不干了,但是错误信息则不用理他。因为用户每次点击submit按钮,errMsg变量都会变清空。
3、利用$(obj).find("input[type=‘text‘]").each()方法能够对所有单行文本框进行遍历,其余表单项同理。each()里面的参数可以是函数,这里就是我们的判断函数。这个函数里面的this就是每一个遍历项。
4、function getStrLength()是用来区分英文与中文计数的,英文的算一个字符,中文算2个字符。
<script> function submitPreprocessing(obj){ var isFormOK=true; var i=0; var j=0; var errMsg=""; $(obj).find("input[type='text']").each(function (){ i++; if(getStrLength($(this).val())==0){ errMsg+="第"+i+"单行文本框为空!"; $(this).css("border","2px solid #ff0000"); isFormOK=false; } else if(getStrLength($(this).val())>10){ errMsg+="第"+i+"单行文本框字数多于5!"; $(this).css("border","2px solid #ff0000"); isFormOK=false; } else{ $(this).css("border","1px solid #cccccc"); } }); $(obj).find("textarea").each(function (){ j++; if(getStrLength($(this).html())==0){ errMsg+="第"+j+"多行文本框为空!"; $(this).css("border","2px solid #ff0000"); isFormOK=false; } else if(getStrLength($(this).html())>20){ errMsg+="第"+j+"多行文本框字数多于10!"; $(this).css("border","2px solid #ff0000"); isFormOK=false; } else{ $(this).css("border","1px solid #cccccc"); } }); if(!isFormOK){ $("#errorMsg").html(errMsg+"请修改!"); return false; } else{ alert("谢谢你的填写!"); $("#errorMsg").html(""); return false; } } function getStrLength(str) { var mylen = 0; for (var i = 0; i < str.length; ++i) { if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) { ++mylen; } else { mylen += 2; } } return mylen; } </script>
原文:http://blog.csdn.net/yongh701/article/details/44702761
内容总结
以上是互联网集市为您收集整理的【jQuery】无须id、name与class等属性,直接对表单中的所有表单项进行遍历、判断、检验全部内容,希望文章能够帮你解决【jQuery】无须id、name与class等属性,直接对表单中的所有表单项进行遍历、判断、检验所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。