WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaScriptのonChangeに関して

0:[投稿] もり [MAIL] [2004/03/26 15:10 ][環境:IE6,win XP windows2000サーバ&ASP]

皆さん、こんにちは

環境はIE6を使用しています。サーバはwindows2000サーバ+IISを使用しています。

下記のソースを作成してIEで実行して、TXT_Aに文字を入力しsubmitボタンを
クリックした際に、ChgTxt() => RetRtn()の順にJavaScriptが動作して欲しい
のですが、RetRtn()のみ動作してChgTxt()が動作してないように思えます。
因みにネットスケープ4.7を使用した際にはChgTxt() => RetRtn()の順で
動作しました。

「ソース内容」
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>
</TITLE>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<SCRIPT LANGUAGE='JavaScript'>
function ChgTxt(){
    document.form0.HID_A.value=document.form0.TXT_A.value;
}
function RetRtn(){
    if (document.form0.HID_A.value == ""){
        alert("テキストが入力されていません");
        return false;
    }
}
</SCRIPT>
</HEAD>
<FORM method=post name=form0>
    <INPUT TYPE=hidden NAME=HID_A>
    <INPUT TYPE=text NAME=TXT_A onChange='JavaScript:ChgTxt();'>
    <INPUT TYPE=submit NAME=SUB_A onClick='JavaScript:RetRtn();'>
</FORM>
</BODY>
</HTML>

どなたか、原因や対策等を教えていただけませんでしょうか。
宜しくお願いします。


1:[回答] ミツ [2004/03/26 15:51 ]

原因はわかりませんが
(1)RetRtn() の中で最初にChgTxt()を読んで実行させてしまう。
(2)RetRtn()をsubmitボタンのonclickで実行するのをやめ、<form>のonsubmitで実行する。
等はどうでしょうか?


2:[回答] ミツ [2004/03/26 15:56 ]

(2)はダメだったみたい。
テキストフィールドでリターンキーを押すとonchangeイベントが発生しなかった。


3:[回答] もり [MAIL] [2004/03/26 16:07 ]

もりです。

自分で色々テストを行っていて、詳細の現象が判りました。
「IEで実行して、TXT_Aに文字を入力しsubmitボタンを
クリックした際に、ChgTxt() => RetRtn()の順にJavaScriptが
動作して欲しい。」と私は書きましたが、実際のオペレーション
は違っていました。入力ではなく、テキストボックスで下矢印を
押して一覧表示された過去に入力した文字から選択した際に、
現象が発生していました。
キーボードから文字を入力した際には、正常に動作しました。
入力方法で動作が違う事に関しては驚きました。

どちらの入力方法でも正常に動作させるにはどうすれば
良いでしょうか?


4:[回答] Yachimata [2004/03/26 17:07 ]

onblur() で処理する。


5:[回答] Yachimata [2004/03/26 18:04 ]

onsubmit() でも良いかもしれません。


6:[回答] もり [MAIL] [2004/03/26 18:16 ]

もりです。

onblur()でほぼ希望の動作が出来たのですが、
テキストボックス上で文字を入力し、エンターキーを押すと
ChgTxt()が実行されずにRetRtn()が実行されてしまいます。

何か良い方法はありますでしょうか?


7:[回答] Yachimata [2004/03/29 09:33 ]

それはブラウザの機能で、検索キーを入力後、
速やかに検索を実行する為のものです。
実際に Enter で実行されているのは、onsubmit() です。

その辺りも鑑みて、関数を配置しなければならないでしょう。


8:[完了] もり [MAIL] [2004/03/29 11:37 ]

もりです。

今までは、ネットスケープ4.7を使用していて、
IE6&ネットスケープ両方で使用可能な様にプログラムを修正
している最中です。
IEとネットスケープでは基本動作はさほど変わらないですが
細かい部分では、かなり違いますね。
IEとネットスケープそれぞれで正常に動作する関数の配置を
検討して見ます。

色々なアドバイス有難うございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World