`
阿尔萨斯
  • 浏览: 4398358 次
社区版块
存档分类
最新评论

限定字符长度,截断中文字符

 
阅读更多

今日遇到个麻烦事。input限定输入字节数是8,中文自然算两个字节。本来一路顺利,keyup keydown keypress事件挨个试过去,把中文用正则替换成两个英文字符,超过8的就return false。ie下表现超级完美。
这个时侯Firefox下麻烦事就开始了,ie下,中文输入法状态下他也是能捕获键盘事件的。但ff下却无法捕获输入法状态下的键盘事件,比如我搜狗,他 只能识别到最后那次空格……一恼火,干脆换条思路,直接截断字符来解决。效果感觉还行,总比没有好,此方法也适用于复制进去的文本。

  1. $("input").bind("keyup",function() {
  2. varstr=this.value;
  3. while(str.replace(/[^/x00-/xFF]/g,"aa").length>8) {
  4. str=str.substr(0,str.length-1);
  5. }
  6. this.value=str;
  7. });

代码很简单,也很安全。想封装成其他形式请自便。

我这里用的是减法,对于input这种很合适。因为不会多出去很多字符的。
这里我事后搜到一个做加法的,也不错,可以参考一下。只是不建议像他这样直接给原生对象做扩展,容易冲突。放到自己的私有对象下会比较好。

分享到:
评论

相关推荐

    js限制textarea每行输入字符串长度的代码.docx

    在JavaScript中,对`textarea`元素进行输入字符串长度限制是一个常见的需求,特别是在处理用户输入时,需要确保数据格式的正确性。在HTML中,`textarea`控件不像`input[type="text"]`那样可以直接通过`maxlength`...

    js form表单input框限制20个字符,10个汉字代码实例.docx

    1. **字符与汉字的区别**:在计算机编码中,英文字符(半角字符)通常占用1字节空间,而中文字符(全角字符)则占用2字节空间。 2. **计算输入长度**:为了准确判断用户输入是否超过了限制,我们需要编写逻辑来正确...

    删除特殊字符和限定用户输入长度的示例代码

    本篇示例代码展示了如何在前端进行两个常用的操作:删除用户输入中的特殊字符和限定用户输入的长度。 首先,代码中定义了一个名为 `checkSpeChar` 的函数,其目的在于检查用户输入中是否含有非法的特殊字符。在编写...

    CSS 控制标题长度,不再需要切字符串函数了 ^_^.txt

    1. **新闻列表或博客文章摘要**:在展示新闻列表或博客文章时,通常需要将标题或摘要限定在一个固定的长度内,这时可以使用CSS截断文本的技术。 2. **产品展示页**:在线商店的商品列表页上,商品名称或描述可能会...

    纯CSS实现“文本溢出截断省略”的几种方法

    在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断判断是基于行数...(文字长度超出限定宽度,则隐

    textarea 控制输入字符字节数(示例代码)

    当替换后的字符串长度超过设定值时,再使用`substr`函数来截断输入内容。 具体代码实现方式如下: ```html ;height:200px;" onkeyup="if(this.value.length>2000)this.value=this.value.substr(0,2000)" onkeydown...

    css截取字符串简单实例

    标题中提到的“css截取字符串”实际上是关于在Web前端开发中如何利用CSS的特性来实现文本截断的效果。在这里,CSS并非传统意义上的编程语言,它不具备直接截取字符串的功能,但它可以通过一些属性来控制文本的显示,...

    aix密码加密方式

    - **限制**: 使用`crypt`加密时,密码的最大长度被限定为8个字符,并且salt值也只使用前8位。这意味着即使密码更长,超过的部分也会被截断。 ##### 2. 后期版本中的密码加密 - **MD5加密**: 从AIX5.3 TL07版本开始...

    Oracle各种数据类型的介绍,适合中高级编程开发人员

    NCHAR的最大长度为2000个字符,而NVARCHAR2的最大长度为4000个字符。 #### Number 类型 - **NUMBER**: Oracle的数字类型,可以存储整数、小数甚至是负数。NUMBER类型的取值范围非常宽泛,可以达到38位精度,即...

    oracle 实际值超过数据库某个字段指定长度报错解决

    在Oracle数据库中,数据字段的长度是预定义的,用于限制可以存储在该字段中的最大字符或字节数。当尝试插入或更新的数据超过了该字段的长度限制时,Oracle会抛出错误`ORA-01438`,提示“value larger than specified...

    oracle汇总.docx

    例如,字符函数`UPPER()`、`LOWER()`和`INITCAP()`分别用于大小写转换,`CONCAT()`用于字符串连接,`SUBSTR()`用于字符串截取,`LENGTH()`用于计算字符串长度,`REPLACE()`用于替换字符串中的特定内容。数值函数如`...

    C语言重点难点总结.doc

    "C语言重点难点总结" 本文总结了C语言的重点难点,涵盖了机器语言、数据类型、...字符串的长度是指字符串中有效字符的个数,不包括’\0’。空串不包含有效字符,串长为0。回文是指去掉空格之后的字符串是中心对称的。

    新051课堂笔记1

    1. 单行函数:针对每一行数据返回一个单一的值,如lower()、upper()、initcap()用于字符转换,concat()用于字符串拼接,substr()用于字符串截取,instr()查找子串位置,length()获取字符串长度,lpad()和rpad()进行...

    JS判断大全

    如果长度超过了预设的最大值,则可以通过`alert`提醒用户或直接截断超出部分的字符。 ```javascript function checkLength() { var maxLength = 50; // 最大长度 var input = document.getElementById('inputField...

    DB2-ErrorCode解释大全

    此类错误码表示虽然SQL语句执行成功,但在执行过程中遇到了某些警告信息,如数据截断等。 #### 二、数据操作类错误码 **SQLCODE:** +100 **SQLSTATE:** 02000 **说明:** 没有找到满足SQL语句的行。 当执行如`...

    SQL基础语法讲解以及常用函数

    - **LENGTH()**: 返回字符串的长度。 - **SUBSTR()**: 截取字符串。 - 示例: `SELECT SUBSTR('Hello World', 7, 5) FROM dual;` - **ASCII()**: 获取字符的ASCII码。 - **CHR()**: 根据ASCII码返回对应的字符。 - *...

    DB2 SQLSTATE CODE

    * 01004 字符串值在指定给具有较短长度的另一字符串数据类型时被截断。 * 01005 SQLDA 中的条目数不够。 * 01007 未授予特权。 * 0100C 从过程返回了一个或多个特殊结果集。 * 0100D 关闭的游标已在链中的下一个结果...

    DB2错误码大全

    - **含义**:当将一个字符串值赋给另一个长度较短的字符串数据类型时,该值被截断。 - **SQLCODE值**:+000, +445, +802, +20141 - **说明**:在赋值过程中,如果目标字段长度不足以容纳源字符串的全部内容,则会...

    信息素养-截词检索.pptx

    ),限定截断字符的最大数量。例如,“hat? ?”能检索到“hat”、“hats”和“hate”,但不会找到“hatted”或“hatting”。而“happ??? ?”可以找到“happy”、“happen”和“happily”,但不包括“happness”或...

    分享10个原生JavaScript技巧

    1. 实现字符串长度截取(cutstr):这个函数允许你截取一个字符串到指定的长度,如果遇到多字节字符(如中文字符)时,会进行相应的计数调整,确保结果字符串不会因为字符截断而出现乱码。 2. 获取域名主机(get...

Global site tag (gtag.js) - Google Analytics