Tsukasa Sakaguchi
t-sak****@brain*****
2002年 12月 13日 (金) 16:05:56 JST
さかぐち@brainheartsです。 こんにちは。 From: Mineaki Gotoh <gij****@peak*****> Date: Fri, 13 Dec 2002 14:05:10 +0900 Subject: [Tep-j-develop] Re: 半角英数字が必要な入力フィールドの処理 >> 》という関数の、3番目の引数に、'style="ime-mode:disabled"' を与えます。 >> 詳細なわかりやすい解説、ありがとうございます。さっそく試してみました。 >> IMEが自動的に無効になると、スムースに入力ができて、とても使いやすくなり >> ました。初心者が登録を迷わないようにするという意味では、この方法は非常に >> 有効ですね。 > >そうですね。最初から半角でしか入力できないのですから、迷いようがない >と思います。 その逆に、たとえば、姓名や住所など、日本人なら全角で入力するような場所には 'style="ime-mode: active"'と書いておくと、自動的にONになるので、より便利かと。 # disabled は絶対にONにできない # inactive はOFFになるけれど、ONにすることができる # という違いがありますね >> なお、Netscape6.1とOpera6でもやってみましたが、両ブラウザは上記CSS非対応 >> のようでした。 > >確認ありがとうございます。私もOpera6で試してみましたが、確かにこの >CSSは無視されているようでした。 Netscape7.1も無視ですね。 そもそもIME自体がWindows独自のものなので、こればかりは仕方ないと思っています。 # WindowsでATOKを使っている人は、どうなんでしょう? # 制御できているのでしょうか。気になるところです。 入力項目のチェックという点では、javascriptが動作するという前提で、チェックする ことも可能ですが、ちょっと面倒くさいです。 とりあえず、郵便番号、電話番号、E-mailアドレスのチェックだけですが、 IEで動作するチェック用のjavascriptはこんな感じになります。 #もっと 簡単な方法があるのかもしれませんが -- var NUMSTR = new String('0123456789'); var ALPSTR = new String('abcdefghijklmnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'); var EXPZIP = new RegExp('^[' + NUMSTR + ']{3}(\-?[' + NUMSTR + ']{2}([' + NUMSTR + ']{2})?)?$'); var EXPTEL = new RegExp('([' + NUMSTR + ']+\\-?)?([' + NUMSTR + ']+\\-?)?([' + NUMSTR + ']{4})$'); var EXPEMAIL = new RegExp('^[' + NUMSTR + ALPSTR + '][' + NUMSTR + ALPSTR + '_\\-\\.]*\@[' + NUMSTR + ALPSTR + '][' + NUMSTR + ALPSTR + '_\\-\\.]*\\.[' + ALPSTR + ']+$'); // 郵便番号判定 // I: 文字列 // O: true/false // 3桁/5桁/7桁のいずれかであればOK function IsZipCD(s) { if (s.length == 0) return true; var r = s.replace(EXPZIP, ''); return (r.length == 0) ? true : false; } // 電話番号判定 // I: 文字列 // O: true/false // 任意桁数の数字-任意桁数の数字-4桁の数字 であればOK function IsTelNo(s) { if (s.length == 0) return true; var r = s.replace(EXPTEL, ''); return (r.length == 0) ? true : false; } // E-Mail判定 // I: 文字列 // O: true/false // @ の前に 半角英数字で始まり任意桁数の半角英数字および-_. // @ の後に 半角英数字で始まり任意桁数の半角英数字および-_.が続き .半角英字で終わる function IsEmail(s) { if (s.length == 0) return true; var r = s.replace(EXPEMAIL, ''); return (r.length == 0) ? true : false; } -- 生年月日も同様にチェックできると思うのですが、実在する日付かどうか?など もうちょっとチェックは細かくなるでしょうね。 # ちなみに、方法は若干異なりますが、全角/半角のチェックもできますし # 入力された文字数ではなく、バイト数を調べることもできますね >ただ、IE5およびOpera6で試した限りにおいては、maxlength は、全角でも半 >角でも1字という解釈なので、ここが問題になることはないでしょう。 > >そんなわけで、修正はMySQL側だけで済むと思います。(ソースをいろいろい >じると、後が大変ですし) 同じ郵便番号、たとえば 001-0001 と入力されたデータと 001−0001 あるいは 0010001 と入力されたデータが混在していると 後々、顧客データを郵便番号をつかって分布分析をしたいとか、そういうニーズが 出てきたときに面倒だと思いますが、その辺はどうお考えでしょうか? データを管理するという点で見ると、ソースを修正して、一律001-0001あるいは 001−0001としてしまったほうがよいと思うのですが。 -- BrainHearts Corp. Tsukasa Sakaguchi / t-sak****@brain***** Tel. 045-290-7561