- PR -

[JavaScript] 数値以外を入力不可にするには(BS、deleteは可)

1
投稿者投稿内容
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-12-05 13:07
テキストボックスに数字以外を入力できないようにしたいのですが、
同時にBackSpaceとDeleteも入力できるようにするには、
どのようにすればよいのでしょうか?

下記のコードだと、
数字しか受け付けないので困っています。

function checkNum()
{
c = String.fromCharCode(event.keyCode);
if ( "0123456789".indexOf(c,0) < 0) return false;
return true;
}

<form>
<input type="text" onKeyDown="return checkNum()">
</form>
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-12-05 13:25
BackSpaceとDeleteのキーコードを判定すればよいです。
キーコードは自分で調べてください。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-12-05 13:47
Deleteを有効にするのであれば、Home,End,→,←が無効だと意味がないような・・。となると

"0123456789\b\x23\x24\x25\x27\x2e".indexOf(c,0)

などと書かないといけないかもしれませんね。あと10キーのキーコードとかIE以外のブラウザへの対応はどうしましょう・・

http://www.openspc2.org/reibun/javascript/appendix/keydown.html

∴ テキスト全体をチェックした方が環境を選ばなくていいような気はします。
tarnwo
ベテラン
会議室デビュー日: 2002/10/25
投稿数: 58
投稿日時: 2007-12-05 14:32
ググってみました。
クロスブラウザ対応の処理
http://phpspot.org/blog/archives/2006/12/javascript_35.html

引用:

shimixさんの書き込み (2007-12-05 13:47) より:
∴ テキスト全体をチェックした方が環境を選ばなくていいような気はします。



こんなのを作りたいのでは?
http://livesearch.alltheweb.com/
数値だと郵便番号検索から住所を導くのかな。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-05 15:16
とりあえず誰かが突っ込むのを待ってましたが

マウスでペーストされたら入力制限の意味がないですよねー。


個人的にはWebアプリケーションでの入力制御ほど無意味なものはないと思います。
(やるなら個別で入力制御せず最後にチェックする)
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
AC
会議室デビュー日: 2004/04/15
投稿数: 18
投稿日時: 2007-12-05 17:45
つ InputMask
http://www.assistedsolutions.com/components/inputmask/default.aspx
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-12-06 11:25
みなさま、ご返答ありがとうございました。

技術的に簡単にできそうではなく、スケジュールも迫っているので、
暫定的にonChangeチェックすることにしました。

後日、仕事が一段落したらonKeyDownで対応してみます。
1

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