2008/05/16(Fri) 02:53:33 編集(投稿者)
<pre><pre>2008/05/16(Fri) 02:52:58 編集(投稿者)
2008/05/16(Fri) 02:50:41 編集(投稿者)
<pre><pre>2008/05/16(Fri) 02:50:32 編集(投稿者)
<pre><pre>■No18684 (はつね さん) に返信
> ■No18676 (猫 さん) に返信
>>「内部的に半角に変換する」を実現したくて、質問をさせて頂いていましたので・・・・。
<script>
function HankakuSeigen() {
var v = String.fromCharCode(event.keyCode);
var a = !!v.match(/[A-Z|a-z|0-9]/);
document.getElementById("OK").value = v + "=>" + a;
event.returnValue = a;
event.cancelBubble = a;
}
</script>
</HEAD>
<BODY>
<input type=text maxlength=12 size=60 onkeypress="HankakuSeigen()" />
<input type=text id="OK">
</BODY>
で、皆さんの懸念は、6文字入力した状態で、カーソルを3文字目にしておいて、
予めコピーっといた、「漢字」2文字をペーストすると、keypress イベントは
発生しませんってこと。他にも例外があるだろうけど、完全に捌くことはとても
骨が折れるのでクライアントの入力制限は止めましょうよ、と、なるわけです。
タイマーで監視したり、keypress と keydown 併用したり、「c-v」だけを無効
にしたり。。。etc...
> 1文字1文字やるのであれば、AJAXでKeyPressイベント使ってという事になるかと。
> # AJAX使わないと1文字1文字入力するごとにページ全体のPostBackが発生して使いづらいはず。
半角しか入れられないってのが客先の要望?であって、漢字コードの自動変換までは意図してない
のではないかと。ユーザビリティっていう面で言うと、大抵のお客さんは、半角入力前提のフィールド
だから逆に ime-disabled してくれ、って言われることの方が、うちの周りでは多くみられる。
あやっくすなんて言おうもんなら、「余計なことすんな」って怒られちゃうしw
でも、あやっくすで1文字ポストバックやっても、昼飯時の回線の心細さったら無いでしょう。
営業なんかは昼飯時がデータ入力の一番気合が入る時間帯でしょうし。>これもうちの周りだけ。
鯖ログ見ると、12:30 (昼飯終わり)〜12:55 (昼後仕事入る前)がサーバー負荷が一番高かったり。
しかも一番重い顧客データ更新作業ばっかり。
>
> あと、入力文字を英数字だけにしたいというのは、JavaScriptなどでクライアントサイドで抑止するのと、
> サーバーサイドで上記の全角半角変換する直前あたりで英数字チェックすれば良いかと。
>
なんにしても、クライアントだけで終わりってのは皆さん口酸っぱく仰っているのでスレ主さん
も理解しているかと。
#JavaScriptを扱っている専門ページは一杯あるのでまずはそこで検索調査すべし。
訂正:
×event.cancelBubble = a;
○event.cancelBubble = !a;
訂正ばっかし:
図表モードし忘れ
更に訂正:
×クライアントの入力制限は止めましょうよ
○入力フィールド個々の入力制限はやめましょうよ
</pre></pre></pre></pre></pre></pre>