`
yuanlanxiaup
  • 浏览: 860056 次
文章分类
社区版块
存档分类
最新评论

input标签的汉字长度限制

 
阅读更多

关于下面提到的String.prototype.chinesesubstr方法, 请参见http://blog.csdn.net/lgg201/archive/2010/05/28/5629526.aspx

/**
* 给String扩展一个len方法, 用于获取包含非ASCII码字符的常规长度(非ASCII码算2个字符)
*/
String.prototype.len = (function() {
var ascRegexp = /[^/x00-/xFF]/g;
return this.replace(ascRegexp, '..').length;
});

//下面是用jQuery做的对input做长度限制的事件绑定
//在keydown之后, 检测其汉字长度, 在长度超过限定的50个字符之后, 动态修改其maxLength属性.
//input和propertychange事件用于将用户通过复制等方式输入的多余的字符串做截取, 使用了上面的汉字截取
$('#diary_title').bind('keydown', function(event) {
if($(this).val().len() >= 50) $(this).attr('maxLength', $(this).val().length);
}).bind('input', function(event) {
$(this).val($(this).val().chinesesubstr(0, 50));
}).bind('propertychange', function(event) {
$(this).val($(this).val().chinesesubstr(0, 50));
});

最初在项目里面用的是在keydown事件中
event.preventDefault();
但是, 阻止默认事件会导致键盘失效, 也就是用户无法删除多余的东西....
后来keydown事件中, event.preventDefault()之前, 增加了删除等一切功能键,
但是后来发现的一个问题是, 用户在达到最大输入长度后, 如果选中一部分, 然后输入字符,
做替换, 还是不可以......
所以现在通过动态修改maxLength来实现.

这个问题现在对于input解决了, 但textarea上面的maxLength貌似不怎么灵光.....
恳求各位大侠对textarea上面的字符限制指点指点......

分享到:
评论

相关推荐

    html入门到放弃笔记

    -- 能正常显示中文 2、<body></body> 属性: 1、text ,取值是一个颜色值(red,green,blue...) 2、bgcolor ,取值也是一个颜色值 Demo : 在刚才的 Demo 基础上 1、在 <html>中 增加 <head&...

    java 正则表达式

    用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" ...

    ZendFramework中文文档

    10.4.8. 通过总数和偏移量进行LIMIT限制 10.4.9. 通过页数和总数进行LIMIT限制 10.5. Zend_Db_Table 10.5.1. 简介 10.5.2. 开始 10.5.3. 表名和主键 10.5.4. 插入数据 10.5.5. 更新数据 10.5.6. Deleting ...

    Vimium ++「Vimium++」-crx插件

    *现在自定义CSS优先于默认样式,如帮助对话框的*限制Vomnibar查询的最大长度为200个字符*完全支持自己缩放的页面:更好的`LinkHints`和`focusInput` *修复一些其他的错误1.62.0: *在可编辑的富文本iframe框中:` ...

    常用js大全,javascript校验大全

    1.74 根据标签展示的<input validator="decimal(16,2+)"> 的validator属性获取校验器类名(DecimalValidator) 91 1.75 删除一行. 92 1.76 根据箱型,校验箱数与组数的值是否符合规定 93 1.77 删除字符串两侧的空格....

    js脚本大全 js验证大全 压缩包

    1.74 根据标签展示的<input validator="decimal(16,2+)"> 的validator属性获取校验器类名(DecimalValidator) 91 1.75 删除一行. 92 1.76 根据箱型,校验箱数与组数的值是否符合规定 93 1.77 删除字符串两侧的空格....

    文章管理系统

    6.解除对p、img、input、button等标签默认空隙的限制 7.屏蔽掉网站数据库和采集数据库的数据库还原功能 8.广告管理中广告编辑,加入上传本地图片到编辑器中功能 9.纠正内容页图文排版时,后台设置图片间距无效bug 10...

    Android开发EditText属性.txt

     android:maxLength限制显示的文本长度,超出部分不显示。  android:lines设置文本的行数,设置两行就显示两行,即使第二行没有数据。  android:maxLines设置文本的最大显示行数,与width或者layout_width结合...

    Ext 开发指南 学习资料

    4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的NumberField 4.7.6. 使用后台返回的校验信息 4.8. 关于表单内部控件的布局问题 4.8.1. 什么都不做,默认的平铺布局 4.8.2. ...

    freemarker总结

    defaultValue,第一种用法不给缺失的变量指定默认值,表明默认值是空字符串,长度为0的集合,或者长度为0的Map对象. 使用!指定默认值时,并不要求默认值的类型和变量类型相同.使用??运算符非常简单,它总是返回一个布尔值...

    php网络开发完全手册

    11.1.2 输入标签input与文本框 167 11.1.3 按钮 168 11.1.4 单选框与复选框 169 11.1.5 多行文本域标签textarea 171 11.1.6 下拉框与列表框标签select 172 11.2 表单数据的接收 173 11.2.1 GET方法 173 11.2.2 POST...

    C#编程经验技巧宝典

    102 <br>0162 如何实现C#中用键完成TAB的功能 102 <br>0163 如何限制文本框密码输入长度 102 <br>0164 数据输入为空提示 103 <br>0165 如何设置文本框光标到末尾 103 <br>0166 输入法调整...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    --也就是说生成的input的type不能是"submit",而这个限制在有些情况下是不可原谅的。 --我们做了优化,现在要使一个Asp.net的按钮能够AJAX提交,你不需要做任何设置(PageManager的属性EnableAjax为true即可,这...

    ExtAspNet_v2.3.2_dll

    -Grid的Values属性访问限制由internal改为public,这就意味这可以自由改变Grid中每个单元格的值了。 -增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性...

Global site tag (gtag.js) - Google Analytics