##Chromeで日本語入力を禁止したい
・IEやFFと同じようにChromeで日本語の入力を禁止したい
・ChromeはCSSのime-mode:disabledに対応していない
・「とにかくヤレ」と神の声を賜ったので、JavaScriptで頑張ってみる
2015/9/17編集
masa-kunikataさんアドバイスの正規表現方式に変更。
textareaで改行・タブもとおるようにしました。
filter_mbc.js
jQuery(document).ready(function() {
// ime-modeが使えるか
var supportIMEMode = ('ime-mode' in document.body.style);
// 非ASCII
var noSbcRegex = /[^\x00-\x7E]+/g;
// 1バイト文字専用フィールド
jQuery('.sbc_field')
.on('keydown blur paste', function(e) {
// ime-modeが使えるならスキップ
if (e.type == 'keydown' || e.type == 'blur')
if (supportIMEMode) return;
// 2バイト文字が入力されたら削除
var target = jQuery(this);
if(!target.val().match(noSbcRegex)) return;
window.setTimeout( function() {
target.val( target.val().replace(noSbcRegex, '') );
}, 1);
});
});
test.css
.sbc_field { ime-mode: disabled; }
test.html
<input type="text" value="abcde" class="sbc_field" />
##デモ
Demoはこちら
●確認した環境
Chrome 36b
Internet Explorer 10
Firefox 30
(Windows 7)
●自賛
IMEが有効でもテンキーで数字の入力はできる
(先にevent.keyCodeの監視で書いてました)
●欠点
一瞬チラチラみえてかっこわるい