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で質問しましょう!
似たような質問が見つかりました
- 数学 前順序集合についての違和感なんですが、全順序と違ってすべての要素の間に順序があるわけではないですよね 3 2022/08/09 00:05
- 数学 (3)と(4)は因数分解の答えですが、これってアルファベットにより答えを書く順番とか決まっているので 3 2022/04/01 16:31
- gooポイント gooポイントをdポイントに交換できない。 3 2022/04/22 20:39
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) Excel 同一セル内 年、日 入れ替え 5 2022/04/09 01:48
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- 数学 順序集合における「反射律」の役割について 9 2022/05/09 23:01
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLとJavaScriptで作った表示...
-
TextBoxに半角数字以外を入れた...
-
テキストボックスに入力した色...
-
GetElementByIdがうまく取得で...
-
ダイアログでFORMのsubmit()
-
tabindexの取得
-
指定時間からの経過時間をリア...
-
AjaxZip3.zip2addr IE8でエラー
-
HTMLファイル同士での値渡し
-
マウスをブラウザの外に出した...
-
正規表現で複数マッチ条件で悩...
-
return trueとreturn falseの用...
-
【jsp/Java】チェックボックス...
-
リストボックス内の重複したも...
-
<JavaScript>tableタグを入力不...
-
onchangeイベントを強制的に発...
-
プルダウン 項目が多いので先頭...
-
confirmのOK・キャンセルを押し...
-
チェックボックス付きのテーブ...
-
VBSでブラウザ上のテキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLとJavaScriptで作った表示...
-
GetElementByIdがうまく取得で...
-
tabindexの取得
-
TextBoxに半角数字以外を入れた...
-
JavaScriptで作ったアプリが正...
-
プルダウンで選択された値を別...
-
HTMLファイル同士での値渡し
-
フォームの内容でリンク先URLの...
-
ページ間で変数を保持したい
-
テキストボックスに初期値で1...
-
javascriptのちょっとした動作...
-
入力するテキストエリアをボタ...
-
jQueryのdatepickerの日付が選...
-
JSPでonChangeを強制発行するに...
-
マイナスなら赤字で表示したい...
-
大文字か小文字かを判断する方法
-
VBscriptの配列変数をJavascrip...
-
一部Enter無効化の方法を教えて...
-
テキストエリアに履歴を残したい
-
フォーカスが外れた時の入力チ...
おすすめ情報