关于中文输入法下 输入框的实时监听 校验
2014-11-04 16:02
381 查看
有个地方需要做中英文输入的即时校验。
大致思路就是监听鼠标的keyup事件,用正则去校验下。
当input要求英文的时候是可以的,但是在中文输入的时候keyup就失效了。
然后就费解了。。。
找了些资料,发现,原来老外是拉丁语系啊没有中文输入法这一说啊,可以google自动补全神码的业工作好好啊,怎么回事呢。。
经过尝试,大致思路是监听输入框的鼠标焦点事件,每隔一段时间正则检验一下。~~
直接贴码:
另:
先在‘<input>’ 里输入
onkeyup="value=value.replace(/[^\X]/g,'')"
然后在(/[\X]/g,'')里的 X 换成你想输入的代码就可以了,
中文u4E00-u9FA5,数字0-9,英文a-z\A-Z,其它符号@、点或其它 符号。也可以多个,用\隔开就行了。
例如:中英文 + 数字 + @符号 + 点符号 \a-\z\A-\Z0-9\u4E00-\u9FA5\@\.
若想在文本框里不能右键弹出菜单和不能粘贴进复制的信息的话
就要在'<input>'里输入 onpaste="return false" oncontextmenu="return false;"
JS 控制文本框只能输入数字
<input onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu = "value=value.replace(/[^0-9]/g,'')">
JS 控制文本框只能输入数字、小数点
<input onkeyup="value=value.replace(/[^\0-9\.]/g,'')" onpaste="value=value.replace(/[^\0-9\.]/g,'')" oncontextmenu = "value=value.replace(/[^\0-9\.]/g,'')">
JS 控制文本框只能输入英文
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z]/g,'')">
JS 控制文本框只能输入英文、数字
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')">
JS 控制文本框只能输入中文
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onpaste="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" oncontextmenu = "value=value.replace(/[^\u4E00-\u9FA5]/g,'')">
JS 控制文本框只能输入中文、英文、数字
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')">
JS 控制文本框只能输入中文、英文、数字、空格
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')">
JS 控制文本框只能输入中文、英文、数字、小数点
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')">
大致思路就是监听鼠标的keyup事件,用正则去校验下。
当input要求英文的时候是可以的,但是在中文输入的时候keyup就失效了。
然后就费解了。。。
找了些资料,发现,原来老外是拉丁语系啊没有中文输入法这一说啊,可以google自动补全神码的业工作好好啊,怎么回事呢。。
经过尝试,大致思路是监听输入框的鼠标焦点事件,每隔一段时间正则检验一下。~~
直接贴码:
$(function () { $("#chinese-name1").bind('focus',filter_time); //绑定获取焦点事件 }) filter_time = function(){ var time = setInterval(regular_expression, 1000); //失去焦点的时候清楚定时器 $(this).bind('blur',function(){ clearInterval(time); }); }; regular_expression = function(){ $("#chinese-name1").val($("#chinese-name1").val().replace(/[^\u4E00-\u9FA5]/g,''));//正则匹配textarea值只能是中文 }
另:
先在‘<input>’ 里输入
onkeyup="value=value.replace(/[^\X]/g,'')"
然后在(/[\X]/g,'')里的 X 换成你想输入的代码就可以了,
中文u4E00-u9FA5,数字0-9,英文a-z\A-Z,其它符号@、点或其它 符号。也可以多个,用\隔开就行了。
例如:中英文 + 数字 + @符号 + 点符号 \a-\z\A-\Z0-9\u4E00-\u9FA5\@\.
若想在文本框里不能右键弹出菜单和不能粘贴进复制的信息的话
就要在'<input>'里输入 onpaste="return false" oncontextmenu="return false;"
JS 控制文本框只能输入数字
<input onkeyup="value=value.replace(/[^0-9]/g,'')" onpaste="value=value.replace(/[^0-9]/g,'')" oncontextmenu = "value=value.replace(/[^0-9]/g,'')">
JS 控制文本框只能输入数字、小数点
<input onkeyup="value=value.replace(/[^\0-9\.]/g,'')" onpaste="value=value.replace(/[^\0-9\.]/g,'')" oncontextmenu = "value=value.replace(/[^\0-9\.]/g,'')">
JS 控制文本框只能输入英文
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z]/g,'')">
JS 控制文本框只能输入英文、数字
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')">
JS 控制文本框只能输入中文
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onpaste="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" oncontextmenu = "value=value.replace(/[^\u4E00-\u9FA5]/g,'')">
JS 控制文本框只能输入中文、英文、数字
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')">
JS 控制文本框只能输入中文、英文、数字、空格
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\ ]/g,'')">
JS 控制文本框只能输入中文、英文、数字、小数点
<input onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')" onpaste="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')" oncontextmenu = "value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\.]/g,'')">
相关文章推荐
- 关于IDEA2017.2.5 输入法 中文输入框无法显示问题的解决方案
- 关于实时监听输入框的值变化
- 中文输入法下如何正确监听输入框input事件
- 安装fcitx中文输入法(fcitx4.0.1版本和fcitx3.6.3版本),解决输入框乱码问题
- 关于ubuntu 10.10上安装中文输入法
- 关于Xcode6模拟器 键盘不显示和没有中文输入法的解决方案
- 关于中文输入法的思考
- 关于iOS默认中文输入法乱码的Bug解决记录
- 关于从Office2007中提取出来的IME2007中文输入法的问题
- jQuery实时监听输入框字符变化的方法
- .Net WinForm 中关于输入法打开却无法输入中文总结
- iOS UITextField实时监听获取输入内容,中文状态去除预输入拼音
- 关于新购的Kindle3问题.中文输入法的安装
- 关于iOS 8.0模拟器不能使用中文输入法
- 关于Fedora Core 8 中文输入法安装设置
- 关于iOS8模拟器下键盘没有中文输入法的解决办法
- IE 键盘监听中文输入法无效的解决方法
- 控制 input 输入框不能输入中文,即不能在输入框中使用输入法
- 关于xcode 6.0+上 iOS8.0+ 模拟器不弹出虚拟键盘和没有中文输入法的解决方案
- oninput & onpropertychange实时监听输入框的变化 && ie8堆栈溢出