`
xkahala
  • 浏览: 48448 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

javascript验证页面字段长度与hibernate映射文件限定字段长度的 问题

阅读更多

       var danger = document.getElementById("domain.dangerAndMeasure").value;
   if(danger.length > 500) {
    alert("施工危险点及对应措施 的长度不能超过1000!");
    return;
   }

 

javascript 的 length 属性  貌似对于中文也是计算一个长度 而不是两个字节

 而 hibernate表映射文件

 

<property name="dangerAndMeasure" type="java.lang.String">
            <column name="DANGER_AND_MEASURE" length="1000" />
        </property>

这里的单位是 1000个字节

 

所以页面验证字段长度的时候,客户输入的是中文的话,你输1000个中文,JS 计算的是1000个长度,而插入数据的时候此字段的长度就已经是 2000字节了。随意肯定报错。

 

但是如果用户输入数字或者字母的时候,JS只算1个字节的长度 ,所以中英混输的时候,真不好精确把握好这个字段的长度验证。 暂时还没想到很好的解决方案!

 

 

 

 

 

 

 

 

 

 

 

0
1
分享到:
评论
4 楼 wangdgsc 2009-12-14  
对中英文的,黄在学校的时候有搞过,代码有给我,不过我不知道放哪里了,还有,你的那个document.getEle...可以使用pototype.js,或者是自己封装一个util,
3 楼 xkahala 2009-05-17  
amcucn 写道

可以告诉你一种解决方案: 对于 JS来说,一个英文字符与一个中文字符都只算一个字符 但我们可以通过正则表达式去获取当前字符是中文还是其它字符 首先对要测试的字符串进行拆分,将每个字符都分开,然后判断当前字符是中文还是英文,如果是中文则返回字符长度为2,否则返回为1.然后将所有长度相加,就知道当前字符串有多长了! 如需要代码,站内信!

站内信   这个功能 不知道用 不过你的思路我明白了,自己能写出来 你可以看到我的回复吗?也可以贴你的 代码  学习 学习 交流 呵呵我菜鸟一个 谢谢啦
2 楼 amcucn 2009-05-16  
可以告诉你一种解决方案:

对于 JS来说,一个英文字符与一个中文字符都只算一个字符

但我们可以通过正则表达式去获取当前字符是中文还是其它字符

首先对要测试的字符串进行拆分,将每个字符都分开,然后判断当前字符是中文还是英文,如果是中文则返回字符长度为2,否则返回为1.然后将所有长度相加,就知道当前字符串有多长了!

如需要代码,站内信!
1 楼 mumianiishiwo 2009-05-13  
我一般当它全部是中文处理,直接除以2的。

相关推荐

Global site tag (gtag.js) - Google Analytics