- PR -

JavaScript上での入力禁止文字チェックについて

1
投稿者投稿内容
seki
常連さん
会議室デビュー日: 2005/03/23
投稿数: 29
投稿日時: 2005-04-11 22:30
JSP画面で、入力された文字に関して、文字コード一覧のここからここまでの
文字を入力可能/不可とするチェックをJavaScriptで考えています。
(文字はcharset=Shift-JISです。)

下記のようなコードを書いてみたのですが、
(この場合、文字コード一覧の「亜 唖 娃 阿 哀 愛 挨 姶 逢 葵 茜 穐 悪 握 渥」
までの範囲をOKとするチェック)
例えば"岡"という漢字もOKとなってしまいます。

JavaScript上で文字をcharsetで明示的に指定し、バイト変換して文字コードから
各々の文字をチェックする事は出来ないのでしょうか??(Javaのように・・・)

※ どなたか、ご存知の方おられましたらご教示の程お願い致します。

function ckTest( text ){
for (i = 0; i < text.value.length; i++) {
ok = text.value.substring(i, i+1);
if (ok >= "亜" && ok <= "渥") {
alert( "OKです。");
return true;
}else{
alert( "「亜〜渥」以外の入力はできません。\n" + "あなたの入力した値=" + ok + " は不正です。");
return false;
}
}
}

_________________
つばさ
ベテラン
会議室デビュー日: 2005/02/05
投稿数: 54
投稿日時: 2005-04-12 06:07
つばさです。

以下のURLを参考にされてはいかがでしょうか。
http://www.tohoho-web.com/js/string.htm#StrCode

以上です。
seki
常連さん
会議室デビュー日: 2005/03/23
投稿数: 29
投稿日時: 2005-04-12 16:01
つばささん、ご教示ありがとうございました。
教えて頂きましたURLで、JavaScriptのstring.charCodeAt(n)で
Unicodeの10進数で入力した文字のコードを取得出来ることを確認しました。

ASCII 文字や、ひらがな、カタカナ、全角英数記号、全角記号などは
下記のURLを参考にして、判断出来そうなのですが、漢字コードに関しては
どのように判別すれば良いかご存知でしょうか???

【参考URL】
http://www.javable.jp/notes/java/unicode5.html

※ 漢字に関しては、Unicodeの10進数では、例えば下記のように
  定義されています。

  亜 : 20124 &#20125; : 20125 亞 : 20126 亟 : 20127 ・・・

  unixのkanjiコマンドで出力される順で、バイト配列で一文字ずつ
  Shift-JISコードを判別したいのですがJavaScriptでは無理なのでしょうか?
  (色々Webで調べているのですが、なかなか分かりません。)

_________________
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-04-12 16:30
escape 関数などどうでしょうか。
seki
常連さん
会議室デビュー日: 2005/03/23
投稿数: 29
投稿日時: 2005-04-12 16:52
インギさん、アドバイスありがとうございます。
escape関数も試してみました。

function ckTest01( text ){

for (i = 0; i < text.value.length; i++) {
ok = text.value.substring(i, i+1);
c1 = escape(ok);
alert(c1);
}
}

【出力結果】
・「弌」→ %u5F0C
・「丐」→ %u4E10

escape関数は、文字をUTF-16のコードで出力してくれるらしいです。
 ただ、Unicodeのコード一覧を見て見ると、漢字がコード順で並んで
いないように私は思います。
【参考にした、UnicodeのURL】
http://ash.jp/code/unitbl22.htm

私は、入力された文字がコード表のfrom〜toまでの文字をOKとする
  チェックを作りたいのですが、Unicodeの漢字のマッピングは定義されて
いない部分が多く、from〜toで指定してあげる事が困難と思っています。

最悪、許容する漢字のUnicodeのコードを配列に持たせてチェックして
マッチしなかったらNGなる事をしなければならないのかと思っています。

  そもそもUnicodeは漢字は並んでコードとしてマッピングされているもの
なのでしょうか?
私の知識不足であれば申し訳ないです。
継続して調べております。
_________________
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-04-12 17:08
引用:

そもそもUnicodeは漢字は並んでコードとしてマッピングされているものなのでしょうか?


文字それぞれに一意のコードが割り当てられているんですから、
そりゃ、並んでいるものですよ。

ただし、JIS配列とは並びが違ってます。
そういうわけで、UnicodeとJISのコード変換を行うエンジンは、
ばかでかい変換テーブルを備えているらしいです。
seki
常連さん
会議室デビュー日: 2005/03/23
投稿数: 29
投稿日時: 2005-04-12 17:16
Unicodeのマッピング一覧のURLを探しました。
 ↓
http://www.rikai.com/library/kanjitables/kanji_codes.unicode.shtml

このコード一覧だと、escape関数で取得したunicode16進で
許容する漢字をfrom〜toでチェックするのは困難です。

それとも、Unicodeの漢字はコード体系として10進ではコードとして
並んでいろものなのでしょうか?
(Webで探しても、中々見つかりません・・・)
_________________
1

スキルアップ/キャリアアップ(JOB@IT)