我想在文本框中通过JS来控制汉字的长度加2,字符长度加1,然后根据文本最大长度能够自动限制输入字符数目!

zliang2000 2006-07-19 02:18:34
我现在有一个文本框,我是用微软的c#开发的b/s程序,微软的.NET中有一个textBox,它有一个属性叫做maxlength,比如我的文本框需要用户输入最大4个字符时候,这个时候可以通过设置maxlenth=4来限制用户输入最大字符数为4。但我有一个问题出来了,因为textbox默认编码为unicode编码,也就是说汉字和英文字符他都看作占一个字符来计算,比如我如果设置了maxlenth=4时候,汉字也可以输入4个,字符也可以输入4个.但我在sql server数据库中使用了char数据类型,如果用户输入4个汉字,其实在数据库里面是占8个字符的。当然我可以把数据库中字段改为nchar结构就可以了。但我想在客户端通过js代码自动能够根据用户输入的是汉字时候长度加2,字符时候只加1,这样当我设置textBox的maxlenth=4时候,用户可以输入4个字符或者输入汉字的时候只能输入2个汉字,请问这个该如何实现!!!
...全文
522 点赞 收藏 9
写回复
9 条回复
羽佳0627 2006年07月21日
没做过这样的,我一般数据库里长度不确定的字段都用varchar或nvarchar长度设得大一点,没有LZ的烦恼
回复 点赞
zliang2000 2006年07月21日
兄弟,你没有看清我的帖子,textbox里面是按照unicode编码计算字符数,所以一个汉字和一个英文字符都算一个字符,但我想让汉字算2个字符,这个你有尝试过吗?
回复 点赞
jingtao_zhou 2006年07月21日
文本框不是有MaxLength属性么?
设置一下大小就可以了
回复 点赞
羽佳0627 2006年07月21日
varchar和nvarchar是长度可变的,建表时指定的长度只不过是最大值,是个界限,实际的宽度是插入的值的长度,只不过其字节数在varchar里面是字符数,在nvarchar里面是字符数*2。

而char和nchar是长度不可变的,建表时指定多长就一定是多长,要是定义了(10)即使只保存一个字符也占10个字符的宽度。

只要是确定不会用到中文,我就用varchar,比如身份证号码,由于有15位和18位的差别,用varchar(18)比较好,在插入15位的值时会自动使用15个字节,要是前端应用程序需要对所有的15位身份证号码转换成18位,就可以用char(18)来保存,不过一般不要求的话用varchar反而更节省空间。

如果可能会保存中文或其它unicode字符,就用nvarchar,道理是一样的,这样比用固定长度的char、nchar字段要节省空间。

我只有在确定一个字段保存的值无论如何都是一样长才用char和nchar,比如性别:中文就是“男”或“女”,用nchar(1);英文的简写就是“M”或“F”,用char(1)。
回复 点赞
zliang2000 2006年07月21日
一般大型项目对数据库设计字段要求严格的时候,就需要考虑这样的问题了!
回复 点赞
zliang2000 2006年07月19日
有思路,我尝试尝试,不知道有没有人做过类似东西,提供一下代码看看!
回复 点赞
羽佳0627 2006年07月19日
在文本框的onChange事件中加入处理函数,一旦文本框的值发生变化,就触发这个处理,当输入的值超过指定长度时就弹出警告,并禁止输入和禁止移出焦点
回复 点赞
zliang2000 2006年07月19日
你这段js好像还是只能简单统计个数,并不能限制文本框只能输入个数!!非常谢谢!
回复 点赞
sluogang 2006年07月19日
function realLength(val)
{
return val.replace(/[^\x00-\xff]/g,"**").length;
}
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告