以文本方式查看主题 - 易表在线答疑 (http://www.egrid2000.com/dvbbs/index.asp) -- 用户社区 (http://www.egrid2000.com/dvbbs/list.asp?boardid=2) ---- [求助]向各位版主求教,一段js代码校验集装箱箱号是否正确的,想用易表的函数重构。 (http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=9704) |
-- 作者:jynet -- 发布时间:2007/9/21 21:25:00 -- [求助]向各位版主求教,一段js代码校验集装箱箱号是否正确的,想用易表的函数重构。 各位版主大家好,我在做一套系统的时候需要实现一个功能,就是校验集装箱箱号是否正确,在网上看了相关算法并找到了一段js代码,想用易表的函数重构,但是易表好像没有数组和子函数功能,苦思良久仍无进展,特来向各位版主求救,先行拜谢。 [code]// JavaScript Document function changechar(str) { if ((str=="a")||(str=="A")) return 10; else if ((str=="b")||(str=="B")) return 12; else if ((str=="c")||(str=="C")) return 13; else if ((str=="d")||(str=="D")) return 14; else if ((str=="e")||(str=="E")) return 15; else if ((str=="f")||(str=="F")) return 16; else if ((str=="g")||(str=="G")) return 17; else if ((str=="h")||(str=="H")) return 18; else if ((str=="i")||(str=="I")) return 19; else if ((str=="j")||(str=="J")) return 20; else if ((str=="k")||(str=="K")) return 21; else if ((str=="l")||(str=="L")) return 23; else if ((str=="m")||(str=="M")) return 24; else if ((str=="n")||(str=="N")) return 25; else if ((str=="o")||(str=="O")) return 26; else if ((str=="p")||(str=="P")) return 27; else if ((str=="q")||(str=="Q")) return 28; else if ((str=="r")||(str=="R")) return 29; else if ((str=="s")||(str=="S")) return 30; else if ((str=="t")||(str=="T")) return 31; else if ((str=="u")||(str=="U")) return 32; else if ((str=="v")||(str=="V")) return 34; else if ((str=="w")||(str=="W")) return 35; else if ((str=="x")||(str=="X")) return 36; else if ((str=="y")||(str=="Y")) return 37; else if ((str=="z")||(str=="Z")) return 38; else return -1000; //if ((str=="a")||(str=="A")) //return 10; //else if (str=="b") //return 1; //else //return 7; } function GetCntr(strcntr) { var num = new Array(10) for (i=0;i<11;i++) { num[i]=0; } test=strcntr;//prompt("请输入需校验的集装箱编码","◎◎◎◎×××××××") len=test.length; if (len != 11) { alert("请重新输入11位的集装箱编码!"); return false; //location.reload(); } else var reload=1; |
-- 作者:Czy -- 发布时间:2007/9/21 21:37:00 -- 呵呵,易表论坛的高手对这类代码估计不会有太大的兴趣。 何不做个示例文件,说明你的详细要求? |
-- 作者:jynet -- 发布时间:2007/9/21 21:44:00 -- [这个贴子最后由jynet在 2007/09/21 10:04pm 第 1 次编辑] 感谢C版的热情回复,其实就是对字段“集装箱编号”进行校验,理论上用行验证公式可以做到,但是集装箱的验证规则很麻烦,搞了好几天,我头都大了。具体验证规则是这样:集装箱号由4位公司代码和7位数字组成,其中第七位数字就是校验码。首先将公司代码转换为数字,去掉11及其倍数,连加除以11,其余数为校验位。 A=10 B=12 C=13 D=14 E=15 F=16 G=17 H=18 I=19 J=20 K=21 L=23 M=24 N=25 O=26 P=27 Q=28 R=29 S=30 T=31 U=32 V=34 W=35 X=36 Y=37 Z=38 |
-- 作者:Czy -- 发布时间:2007/9/21 21:48:00 -- 只要能说得清楚规则,我想有办法实现的,再则你的规则看起来似乎并不是太复杂。 |
-- 作者:jynet -- 发布时间:2007/9/21 22:06:00 -- 需要验证的东西有是否共为11位、前四位是否为字母、后七位是否为数字、然后用上面js中的这个算法:“num[0]+num[1]*2+num[2]*4+num[3]*8+num[4]*16+num[5]*32+num[6]*64+num[7]*128+num[8]*256+num[9]*512”求和并除以11;其中前4位还需要转换为相应的字母所对应的值,最后用这个值同最后一位也就是第11位进行校验。求czy版主帮帮我啊。 |
-- 作者:jynet -- 发布时间:2007/9/21 22:08:00 -- 3位版主都来了,真是受宠若惊啊,万分感谢各位的关怀和关注,也恳请各位帮我想想办法,哪怕是思路点拨也万分感谢。 |
-- 作者:Czy -- 发布时间:2007/9/21 22:24:00 -- 看得有些糊涂,你发个文件吧。 |
-- 作者:程兴刚 -- 发布时间:2007/9/21 22:45:00 -- egd文件下载
|
-- 作者:Czy -- 发布时间:2007/9/21 22:48:00 -- 程版是不是发错文件了? |
-- 作者:程兴刚 -- 发布时间:2007/9/21 22:52:00 -- 没有,验证公式在验证结果列刷新公式中!可以放到航验证公式中,但是是提示公式,所以改个位置让楼主先看看! |