Ajax 板


LINE

由於工作上的需要以及对lib的无知,小弟自己用JavaScript写了一些简单 的function, 想提出来讨论 (不过才刚写好,可能有些疏漏)。 简单来说这个traval function适用在检查表单的必填项目。 透过在表单下自订Attribute的方式来达到必填项目的控管, 也可以将那些在submit_check前烦杂的 if else 做一定程度的简化。 适用IE & FF。 使用的自订属性一共有三个。 mark(必填) , colname(可免填) , rule(可免填) (只是用底下a、d系列) @mark : 用来标记此element为必填项目 @colname:在此项目未填时,可用来作为提示讯息。 @rule : 支援正则表示式之字串规格验证 适用目标: input tag系列 :(a) text password file hidden (b)checkbox radio (c)SELECT (d)Textarea a类别是属於 value比对类。如果没有输入rule则trim後比对空白。 b类别属於群组确认内。撷取目标的name属性进行getElementByNames, 取得的群组中只要有一个属於checked ,就算通过验证。 c类别是验证下拉式选单是否停在第一个选项 d类别同a类 另外没有通过必填项目验证者 会提示讯息 并将目标node做focus 使用范例 <input tpye="text" mark="true" rule=".+" colname="报表名称" id="rna" name="rna"> 由於才刚写好还蛮兴奋的,所以提出来和同好分享, 如果有前辈对这类的小工具有甚麽要注意的地方, 或者是有值得改进的地方,可提供给晚辈参考的,还请不吝指教。 原码暂且先贴在後,不过只是初稿,因为晚上有约所以才刚告一段落而已, 稍後校稿之後会再修正一次。^^ ──────────────────────────────── //浏览所有节点 function traval(){ var node_targe; var typeArray=new Array(3); typeArray[0]="INPUT"; typeArray[1]="SELECT"; typeArray[2]="TEXTAREA" for(var i=0;i<typeArray.length;i++){ node_targe=document.getElementsByTagName(typeArray[i]); for(var nodeId in node_targe) { if(document.all){ if(node_targe[nodeId].mark) checkNode(nodeId); }else{//FF对自订属性的处理法 : 改用getAttribute //将除了可操作元件以外的属性排除 if((typeof node_targe[nodeId].nodeType)=="undefined") continue; var targeNode=node_targe[nodeId]; if(targeNode!=null&&targeNode.getAttribute("mark")){ checkNode(targeNode.getAttribute("id")); } } } } } //个别检查节点 function checkNode(nodeId){ var node=document.getElementById(nodeId); var check=true; switch(node.nodeName){ case "INPUT": alert('hi'); //检查"输入"型态的栏位 (或者换句话说 , 用value判断者 . 支援 regex ) if(node.type=="text" || node.type=="password" || node.type=="file" || node.type=="hidden"){ if(node.getAttribute("rule")){ if(!match(node.value,node.getAttribute("rule"))){ alertErrorMsg(nodeId); return false; }else return true; }else{ if(trim(node.value)==""){ alertErrorMsg(nodeId); return false; } } //群组式的 checkbox 或 radio ..检查同 [name] 的群组是否有被勾 选 }else if (node.type=="checkbox"||node.type=="radio"){ var NodeGroup=document.getElementsByName(node.name); var check=false; for(var k in NodeGroup){ if(NodeGroup[k].checked){ check=true; } } if(!check) { alertErrorMsg(nodeId); return false; } }else{ alert('debug:在['+nodeId+']出现未知的型别 ['+node.type+']!'); return false; } break; case "SELECT": if(node.selectedIndex==0){ alertErrorMsg(nodeId); return false; } break; case "Textarea": if(node.getAttribute("rule")){ match(node.value,node.getAttribute("rule")); }else{ if(trim(node.value)==""){ alertErrorMsg(nodeId); return false; } } break; default: alert('debug:在['+nodeId+']出现未知的型别 ['+node.nodeName+']!'); break; } alert('finish'+node.nodeName); } function match(str,pattern){ var re = new RegExp(pattern, "gi"); if(!re.test(str)) return false; else return true; } function trim(str) { return str.replace(/^\s*|\s*$/g,""); } function alertErrorMsg(nodeId){ var node=document.getElementById(nodeId); if(node.getAttribute("colname")) alert(node.colname+"未正确填写!"); else alert("尚有栏位未正确填写!"); node.focus(); return false; } </script> -- String temp="relax"; | Life just like programing while(buringlife) String.forgot(temp); | to be right or wrong while(sleeping) brain.setMemoryOut(); | need not to say stack.push(life.running); | the complier will stack.push(scouting.buck()); | answer your life stack.push(bowling.practice()); | Bone everything --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68 ※ 编辑: TonyQ 来自: 220.134.27.68 (02/27 18:01)
1F:推 PsMonkey:还不错阿... 怎麽没人 m 也没人推 02/28 06:11
2F:推 curtis816:推 02/28 08:18
3F:推 smno1:推 03/12 20:45







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP