我正在使用下面的jquery。
$(document).ready(function () {
$("#myTextBox").keydown(function () {
return false;
(Or when keypress) event.preventDefault();
});
});
在IE 6-9 Chrome中,它适用于英语IME模式。 它会阻止用户在文本框中键入内容。 但它在IE 6,7和8中不适用于韩文IME模式。 但它适用于IE 9。 我没有用日语或中文测试,但我认为它会是一样的。
我需要做的是阻止用户在某些文本框中编写韩文字符。 有谁知道为什么会在IE 6-8中发生这种情况?
修改 根据Fresheyeball的想法,我已经得出了这个结果。
var korean = /[\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uD7B0-\uD7FF\uFFA1-\uFFFF]/g;
var chinese = /[\u4E00-\u62FF\u6300-\u77FF\u7800-\u8CFF\u8D00-\u9FFF]/g;
var japanese = /[\u3040-\u309F\u1B000-\u1B0FF\u30A0-\u30FF\u31F0-\u31FF\u1B000-\u1B0FF]/g;
<!--
// Korean - http://en.wikipedia.org/wiki/Hangul
U+AC00-U+D7AF
U+1100-U+11FF
U+3130-U+318F
U+A960-U+A97F
U+D7B0-U+D7FF
U+FFA1-U+FFFF
// Chinese - http://en.wikipedia.org/wiki/CJK_Unified_Ideographs
U+4E00-U+62FF
U+6300-U+77FF
U+7800-U+8CFF
U+8D00-U+9FFF
// Japanese(hiragana) - http://en.wikipedia.org/wiki/Hiragana
U+3040-U+309F
U+1B000-U+1B0FF
// Japanese(katakana) - http://en.wikipedia.org/wiki/Katakana
U+30A0-U+30FF
U+31F0-U+31FF
U+1B000-U+1B0FF
-->
$("#Text2").val($("#Text1").val().replace(korean, ""));
但是,仍有一些错误需要修复。因为韩国人,日本人或中国人,所以不是整个人物。它仍然等待下一个角色命中。字母'A'只是'A',它已完成打字。但是KJC与那些有点不同。我想我可以解决这个问题。再次,非常感谢Fresheyeball。
答案 0 :(得分:0)
您还可以创建字符白名单并使用正则表达式进行验证:
$('#myTextBox').keyup(function(){
val = $(this).val();
// use regex to determine if all the characters entered so far are valid
// and remove invalid ones
val = val.replace(/[\{rangeStart}-\{rangeStop}]/g, '');
$(this).val(val);
});
只是fyi,我对正则表达式不太好,所以我的语法可能会关闭。但理论上你应该能够使用正则表达式来测试ascii集和各个ascii字符的范围。
http://www.javascriptkit.com/jsref/regexp.shtml请参阅有关ascii文字的部分