1

私は以下の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に感謝します。

4

1 に答える 1

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.shtmlASCIIリテラルのセクションを参照してください

于 2013-03-07T22:42:20.907 に答える