
No.5ベストアンサー
- 回答日時:
#4>text1,text2の両方に値が入ってる場合、text1→text2にフォーカスが移った場合に、カーソルが消えてしまいます。
#4>これは、先の質問のようにtext2のフォーカスイベントが、text1のフォーカスアウトのイベント前に処理されるためだと思います。
カーソルが消える状況というのは、イベントの処理順というより、TAB移動した時の画面の更新タイミングに依るようです。(クリックで移動した場合は、カーソルは消えませんでした、また、setTimeoutによってイベント終了後に変更するようにしてもタブ移動の場合カーソルがでないため)
というわけで、非常にブサイクなやり方ですが、以上の状況をなんとかするためにタブ移動をscript で実行するサンプルを書いてみました。
text1 からフォーカスが無くなったら、text2に(#4で示されたような)値を設定します。
----------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<title>sample</title>
<script type="text/javascript"><!--
var t_id;
function func1(){
clearTimeout(t_id);
form1.text2.focus();
form1.text2.value = form1.text1.value + '0000';
}
function tabEmu(){
if(event.keyCode==9){
form1.text2.focus();
event.returnValue=false;
return false;
}
}
//-->
</script>
</head>
<body>
<form name="form1">
<input type="text" name="text1" value="9999" onkeydown="tabEmu()" onblur="t_id=setTimeout('func1()', 250);">
<input type="text" name="text2" value="1000">
</form>
</body>
</html>
ありがとうございます。
これでこの問題自体は解決できそうですが、textboxが増えた場合の制御とかが難しそうですね。
議題が変わってきましたので、一旦クローズさせて頂きます。
長い間お付き合いして頂き、ありがとうございました。
No.4
- 回答日時:
#3補足>検証は、あくまでもイベントの確認をするためのものです。
間違っていたらご指摘下さい。
私の答え、
onFocusin を使用することで、イベントの発生順を
A1.onBlur→B2.onFocus
にできる。
・#1onFocusin に変更してみたが「テキストボックスに値が入ってる場合はB2.onFocus→A2.onBlur」のようにイベントが起こるのでonFocusinは使えない。
それに対する私の答え、値が入っていても、(onFocusinで)大丈夫。
・質問者が検証されているHTML
私の答え、onFocusin が使われていない。
#3>フォーカスを受けるイベントを取りたいのではなく、次のフォーカスに移る前の処理をしたいのです。
focus 側で処理をするなんて初めから言っておりません。
つまり、「A2.onBlur→B2.onFocus」の順番でイベントが起こってA2.onBlur で処理をすればいいのですよね?
騙されたと思って、
#2の検証HTMLでonFocus を onFocusin に(両方((B2ですけど)多分ソコを勘違いされているのだと思うのですが))変更して検証してみていただけませんか?
この回答への補足
いつも回答ありがとうございます。
根本的なことを端折ってしまって、本来の問題から外れてきました。
何が問題なのか具体的にあげますと、
以下のJavaScriptで問題になってます。
<input type="text" name="text1" onBlur="text2.value = this.value + '0000';" />
<input type="text" name="text2" />
text1,text2の両方に値が入ってる場合、text1→text2にフォーカスが移った場合に、カーソルが消えてしまいます。
これは、先の質問のようにtext2のフォーカスイベントが、text1のフォーカスアウトのイベント前に処理されるためだと思います。
text2に、onFocusinイベントを挿入してもダメでした。
よろしくお願い致します。
No.3
- 回答日時:
#2補足>
onFocusin になってないみたいだけど・
この回答への補足
#1の補足でも申しましたが、
フォーカスを受けるイベントを取りたいのではなく、次のフォーカスに移る前の処理をしたいのです。
検証は、あくまでもイベントの確認をするためのものです。
説明が足らず申し訳ありません。
No.2
- 回答日時:
#1>テキストボックスに値が入ってる場合はB2.onFocus→A2.onBlur
となるみたいです。
ウチで試してみたところでは、値が入っていても
A1.onBlur→B2.onFocus
になりますが・・
この回答への補足
ありがとうございます。
検証したHTMLです。
<HTML><HEAD></HEAD><BODY>
<input type="text" name="text1" onFocus="alert('text1.onFocus');" onBlur="alert('text1.onBlur');" />
<input type="text" name="text2" onFocus="alert('text2.onFocus');" onBlur="alert('text2.onBlur');" />
</BODY>
</HTML>
text1、text2の両方に値が入っている場合に
text2.onFucus→text1.onBlurとなります。
環境は、WinXP SP2 IE6.0です
No.1
- 回答日時:
タブでフォーカス移動した時は
A1.onBlur→B2.onFocus
になって
B2クリックで移動した時は
B2.onFocus→A2.onBlur
になるようです。
B2.onFocus の代わりに
onFocusin を使ってみてください。
この回答への補足
今、色々調査している途中なんですが単純にそういうわけではないみたいです。
テキストボックスに値が入ってない場合は
A1.onBlur→B2.onFocus となりますが、
テキストボックスに値が入ってる場合は
B2.onFocus→A2.onBlur
となるみたいです。
やりたいことは、フォーカスが移る前にonBlurの処理をしたいので、onFocusinは使えません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
onBlurとonFocusの処理順序について
JavaScript
-
onchangeイベントを強制的に発生させる
JavaScript
-
onClickに複数の関数を挿入する方法
JavaScript
-
4
JavaScriptで変更した属性の元の値の取得
JavaScript
-
5
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
6
focus()が上手くいかない
JavaScript
-
7
tableのheight指定が効かない
HTML・CSS
-
8
データベースのINT型項目にNULLはNG?
MySQL
-
9
どれがPrimary Key、ForeignKeyか調べるSQL教えて
その他(データベース)
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
12
onClickとsubmitの処理順序
JavaScript
-
13
ダブルクォーテーションのreplaceの方法
JavaScript
-
14
テーブルの表示がずれます
HTML・CSS
-
15
getParameter()について
Java
-
16
tableの任意行にfocusをあてる
JavaScript
-
17
SHIFT + TABキーの件について
JavaScript
-
18
テーブルタグの中にdivを含めてはダメ?
HTML・CSS
-
19
チェックボックスのON/OFFに応じて別の複数のチェックボックスも連動ON/OFF
JavaScript
-
20
IEのイベントログをイベントビューアの「Internet Explorer」で確認する方法
Windows Vista・XP
関連するQ&A
- 1 jqueryでのkeydownイベント発生回数制御
- 2 javascriptで、イベントが発生しない
- 3 Windows Media Player をJavaScript(FireFox)で制御する方法。
- 4 HTMLに書き込むことなく、イベントを制御する方法
- 5 イベント発生時に入力待ち状態にする方法?
- 6 JavaScriptでペーストイベントを発火させる方法
- 7 javascript で乱数(文字)を発生させて表示する方法
- 8 Firefoxの拡張で擬似的にキーイベントを発生させる方法
- 9 【javascript】URLからkeycode入力するjavascript付与する方法を教えてくだ
- 10 フレームの表示順序を制御したい
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
ページ間で変数を保持したい
-
5
jQueryのdatepickerの日付が選...
-
6
フォームの内容でリンク先URLの...
-
7
javascriptの計算結果をweb上に...
-
8
GetElementByIdがうまく取得で...
-
9
テキストボックスに初期値で1...
-
10
VBSからjavascript
-
11
tabindexの取得
-
12
入力された全角英数字だけを見...
-
13
PHPでMYSQLの検索結果にリンク...
-
14
Javascriptでプログラム作成を...
-
15
プルダウン 項目が多いので先頭...
-
16
selectのonChangeが動作しません
-
17
onclickが動作しない
-
18
VBSでブラウザ上のテキストボッ...
-
19
value内に変数を入れたい
-
20
return trueとreturn falseの用...
おすすめ情報