首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 关于onkeydown和onkeyup [已结贴,结贴人:lilyly]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 10:00:28 楼主
    代码如下,问题在代码后面的注释里,请大家帮帮忙!
    <form name="form1">
    理由: <textarea name="reason" onkeydown="CountStrByte(reason,used,remain);"
                onkeyup  ="CountStrByte(reason,used,remain);"> </textarea>
    已用: <input name="used"  type="text" value="0"  >
    剩余: <input name="remain" type="text" value="1600">


    <script language="javascript">
    var LastCount=0;
    function CountStrByte(Message,Used,Remain)
    {
    var ByteCount=0;
    var StrValue=Message.value;
    var StrLength=Message.value.length;
    var MaxValue=1600;
    if(LastCount!=StrLength)
    {
    for(i=0;i <StrLength;i++)
    {
    ByteCount=ByteCount+1;
    if(ByteCount>MaxValue)
    {
    Message.value=StrValue.substring(0,i);
    alert("超过字节!");
    ByteCount=MaxValue;
    break;
    }
    }
    Used.value=ByteCount;
    Remain.value=MaxValue-ByteCount;
    LastCount=StrLength;
    }
    }
    </script>
    </form>
    <!--把onkeydown删掉正常,把onkeyup删掉,字数统计始终少一个。另外在输入多个字符,再删字符时字数统计又会出现问题。-->
    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 10:30:241楼 得分:4
    中间不要加空格
    <textarea name="reason" onkeydown="CountStrByte(reason,used,remain);"
                onkeyup  ="CountStrByte(reason,used,remain);"> </textarea>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pla18sep
    • 等级:
    发表于:2008-05-10 10:49:422楼 得分:0
    IE6.0测试,未发现楼主描述的问题!
    输入框内默认有一个空格,接着空格输入文本,统计会加上这个空格,替换这个空格,字符数量统计无误(中英文)。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 10:55:213楼 得分:0
    空格源文件中是没有的,贴过来出现的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pla18sep
    • 等级:
    发表于:2008-05-10 11:31:374楼 得分:26
    抱歉,刚才没有看清楼主的问题~!
    删除onkeyup后,你使用onkeydown来触发函数~!
    onkeydown与onkeyup是有差异的,使用统一个函数,应对不同事件,必然导致运行结果的差异~!
    onkeyup时,你对字符串的添加或删除动作已经完成,这时你获得了准确的字数统计~!
    而onkeydown则不同,发生该事件时,键盘本身的动作(输入一个字符或一个退格键)并没有完成,在这个时机触发了函数,必然导致相差一个键盘动作,
    表现出来就是在输入字符时,少统计一个字符;输入退格键时,多统计一个字符~!
    如果要使用onkeydown来进行字符统计,函数应该考虑这个动作之后关联的onkeyup动作对内容的改变~!

    统计字符的操作该使用onkeyup事件吧~!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-10 12:55:455楼 得分:0
    喔喔喔!明白了!!!谢谢pla18sep!!!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved