系统中卡号,身份证这种输入框希望不能输入汉字,且在扫码得到内容时也为数字或字母,当焦点在当前框内时输入法为英文状态。
IE可以使用style=”ime-mode:disabled;”达到效果,但在chrome系浏览器并不此支持属性。
解决办法
chrome系浏览器中光标进入password输入框时,输入法会切换成英文状态,利用这一特性,可以达到相同效果。
代码实现
- 1. 编写jQuery插件
(function(jq){var baseHtml='<input id="imedisabled_password_input" type="password" style="width: 1px; height: 1px; position: absolute; border: 0px; padding: 0px;">';function init(target){if(!!window.ActiveXObject||"ActiveXObject"in window){jq(target).css({imeMode:'disabled'});}else{var pwdInput=jq("#imedisabled_password_input");if(pwdInput.length==0){jq(target).after(baseHtml);}
var disabledIME=function(event){var _t=this;jq('#imedisabled_password_input').focus();setTimeout(function(){_t.focus();jq(_t).one('focus',disabledIME);},50);};jQuery(target).one('focus',disabledIME);}};jq.fn.imedisabled=function(){return this.each(function(){init(this);});};})(jQuery);
- 2. 引用上面的代码,然后编写如下代码
<input type="text" id='mytest'>
$(function(){
$("#mytest").imedisabled(); //得到焦点时默认英文状态
$("#mytest").focus();
});