求救: IE的文本框输入的字符串,用javascript判长度,是字符个数,怎么办?(100分)

  • 主题发起人 主题发起人 Walone
  • 开始时间 开始时间
W

Walone

Unregistered / Unconfirmed
GUEST, unregistred user!
我想判断输入的字节数。
因为 当用到中文字符串时
所限制的字节数就会突破
写到库里就会出问题
请问有没有好的解决方式???
 

do
cument.formname.textname.value.length ?
 
document.formname.textname.value..substr(0, 最大长度)
不管你的字符串是什么都直接执行一下就可以,要是原来就是小于“最大长度”,
那返回的还是原来的,要是长了,就截断他。
另外长度是用document.formname.textname.value.length 判断
 

function asdf{
document.formname.textname.value..substr(0, 最大长度)
}
.
.
.
id=a1 onchange=call asdf(this)
something like this
 
to Pipi.
do
cument.formname.textname.value.substr(0, 最大长度) 得出的结果亦不是想要的。

例1, textname.value="1234567890"
textname.value.substr(0,6) 得出的将是 "123456"
例2, textname.value="一二三四五六七八九十"
textname.value.substr(0,6) 得出的将是 "一二三四五六"

而这并不是我想要的,我只想取最大6个字节的东东,要存入数据库
有汉字的情况,却办不到。
如何解决??


 
s1,s2 : string;
sTemp : array [1..6] of char ;
begin
s2 := '中国人民很行!';
for i:= 1 to 6 do
begin
sTemp := s2
end;

这样太笨了吧?
 
to bk:
也许是我不懂你的意思
不过,我还是认为是你不懂我的意思
嘻嘻,得罪了
哪位仁兄帮忙,解决一下

do
cument.formname.textname.length
10个汉字和10个英文字母和(5个汉字+5个英文字母)的长度居然都是10!!
 
??????
从来没有遇见过这种事情!!
还是用DOS吧^_^,保证可靠!!
转入正题,我用VBScript做的,有没有关系?(JAVA太差了^^^)
<a href="http://atom.heha.net/test.htm" target="_blank">这是我的例子</a>
自己看源代码吧,主要是用了 ASC(MID(TXT,I,1) 如果不是 单子节会产生负数的原理,哈哈
DEBUG.
可以了吧?
 

to atomic:
我也没想到会这么让人为难,
居然让你想到了vbscript
...转入正题
既然vbscript能做,javascript会做不了?
javascript中有没有类似asc(mid(txt,i,1))的函数?
 
Ok,不用vbscript啦
用javascript中的 string.charCodeAt(i)来得到第i个字符对应的整数代码
然后判其是不是大于127就可以了
但是,很奇怪,我用的是win2000,ie是 5.00.2920.0000
显示的汉字的整数代码都是5位的,

"气死我啦".charCodeAt(0)=27668
"气死我啦".charCodeAt(0)=27515
"气死我啦".charCodeAt(0)=25102
"气死我啦".charCodeAt(0)=21862
是所谓的Unicode标准吧,也许!
这样的话,判长度就可以做个循环啦
function judgebytelen(valstr,maxlen)
{
var len=valstr.length;
for(var i=0;i<valstr.length;i++)
{
if(valstr.charCodeAt(i)>127)len++;
}
if(len>maxlen)alert("太贪心了吧!");
}
ok,搞掂,是不是也该给自己点儿分呀,嘻嘻
 
哎,老是忘了小于号,幸亏回头看了一眼
function judgebytelen(valstr,maxlen)
{
var len=valstr.length;
for(var i=0;i 小于 valstr.length;i++)
{
if(valstr.charCodeAt(i) 大于 127)len++;
}
if(len 大于 maxlen)alert("太贪心了吧!");
}
 
vbs和js的字符串都是用unicode,就是说英文、中文都是2个字节。
如果用数据库access,也是用unicode,比如,char(10),不管中英文都是
能放10个字。
但是,如果在其他数据库不是这样,你就可以在数据库里面substr,
比如:
insert into ..... values (...., substr(filedX,1,最大字节数), ...)
 
噢,不错,在oracle中可以用substrb的
不过,我很担心这样一截,万一出现半个汉字怎么办?
好象还是得判每个字符是两个字节还是一个字节吧
 
什么是 unicode?能介绍介绍吗?
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部