• ベストアンサー

onBlurとonFocusの処理順序について

A__の回答

  • ベストアンサー
  • A__
  • ベストアンサー率47% (22/46)
回答No.1

<input id=a onBlur=alert("aB")> <input id=b onFocus=alert("bF")> ↑のソースだと、a から b にカーソルを移すと alert("aB") → alert("bF") となりました。 puntoabartさんはもっと複雑な処理をさせていて、 その中で逆になってしまっているんだと思います。 たぶん思いどうりにできますよ。

puntoabart
質問者

補足

確かに、onBlur処理はforやifがたくさん入った複雑なものになっています。 ところで、複数のイベントハンドラの処理は並行して行っているのでしょうか? もし、並行して行っているならonBlur開始→onFocus開始となり、 処理が複雑なonBlurが終わる前にonFocusが終わってしまうのかもしれません。

関連するQ&A

  • イベント発生順序

    いつもお世話になっています。 JavaScriptの発生順序を制御する方法はありますでしょうか? 例えば、あるテキストボックスがあって、 A1→B2とフォーカスが移るときのイベントですが、 B2.onFocus→A2.onBlurの順番でイベントが発生していますが、これを A2.onBlur→B2.onFocusとしたいです。 IE限定でいいので、よろしくお願いします。

  • C# テキストボックスについて

    フォームに置いたテキストボックスに フォーカスを入れると カーソルが点滅するごとに,オーバーライドした OnPaintのハンドラーにイベントが引っかかります。これは当然のことなのでしょうか? カーソルが点滅したぐらいでPaint処理をするのはわずらわしいし不都合がある場合があります。 なので,イベントが引っかからない(起きない)ようにするか,または OnPaintハンドラー内において Paintイベントが起きたのはテキストボックスであるということを知る方法はないのでしょうか。

  • VC++2008にて、画面の動的変更処理について

    現在VC++2008のMFCにて開発を行っております。 ダイアログのテキストボックスAの値を変更し、 カーソルが移動した際に 他のテキストボックスBの値を、Aの値により処理がかかる のような処理は無理なのでしょうか? やはり、ボタン押下でしか画面の更新は無理なのでしょうか? ご教授頂ければ幸いです。

  • フォームを開く時、にある処理をしたいのですが

    お世話になります フォームを開く時、にある処理をしたいのですが たとえば、フォームAにテキストボックスB、の窓があります このテキストボックス窓にフォームAが表示されると同時に 簡単な情報を表示したいです その情報は別テキストファイル(myFile.txtなど) これらのロジックは自分で考える、として 質問したいのは、 ”フォームを開く時”というイベントの書く場所がみつかりません フォームAをデザインビュで開いて、プロパティをみても イベントのところには、  クイック時  ダブルクイック時  マウスボタンクイック時   ・   ・ 等で、 探している、フォーム開く時、の項目が見つからないのです このフォーム開く時、がどこにあるのか、場所を教えてください よろしくお願いします

  • [Javascript]テキストボックスにフォーカスが来たら色を変えたい。

    こんばんわ。 テキストボックスなどにフォーカスが当たったら、そのテキストボックスの背景色を変えたいのです。 onForcus と style を組み合わせてイロイロしましたがダメでした・・・。 onfocus=""とonblur=""で動きを認識して・・・ style="background-color : aqua;" や style="background-color : white;" で背景色を変えたいのですが・・・。 宜しくご伝授くださいませ。

  • onblurイベント時にPHPファイルを読み込む

    <check.js>--------------------- function check(obj){ document.write('<script type="text/javascript" src="check.php?code=' + obj.value + '"></script>'); } ------------------------------- check.jsを読み込んだページ内のテキストボックスの onblurイベント時にPHPファイルを読み込みたいのですが、 check.jsを上記のように書くとページがcheck.phpの内容で再描画されてしまいます(当たり前ですね) check.phpにはGETにてパラメータを渡し、DBへ接続して値を抽出する処理だけさせて 元のjsファイルに値を戻したいのですがどのように記述すればいいでしょうか。

  • 図の順序

    Excelでは図を挿入した時順序でテキストの背面には出来ないですか、テキストBoxで作成して重ねる以外駄目ですか、Wordの様には出来ないですか。

  • テキストボックスの背景色変更時に影ができてしまう

    テキストボックス選択時に背景色をJavaScriptで変更したく、下記のように書きました。 <input type="text" value="テキストボックスです" onfocus="this.style.backgroundColor='#cccccc'" onblur="this.style.backgroundColor='#ffffff'"> これをWindowsXP+IE6で実行したところ、背景色の処理はうまくいくのですが、画面のプロパティのテーマがデフォルトのWindowsXPの場合、元は影のないテキストボックスなのですが、背景色変更時に影つきのテキストボックスになってしまいます。 テーマがWindowsクラシックだと元々影つきなので変化しません。 背景色変更時に影つきにならないようにできませんでしょうか? それともこれはIE6のバグなのでしょうか?

  • VBAのイベント処理について

    VBAのイベント処理について お世話になってます。現在、VBAでアプリケーションを作成しています。 1つのフォームに4つのテキストボックスと1つのボタンが配置されており、それぞれイベントが設定されています。 その中のテキストボックスに関するイベントなのですが、1つのテキストボックスに対してKeyPress、KeyDown、MouseUp、AfterUpdate、以上4つのイベントを作成します。 フォームに配置されている4つのテキストボックスすべてに、上記で示したイベントを作成する必要がありますが、各イベントにおける処理の内容はオブジェクト名が違うだけで全く同じです。 ひとつひとつイベントを作成していけば、処理目的は満たせそうですが、ソースがかなり長くなってしまいます。ひとつのオブジェクトに対してこれらの処理をひとまとめにする様な記述方法はありませんでしょうか?考え方だけでも教えていただければ幸いです。 質問が長くなってしまい申し訳ありません。回答宜しくお願い致します。

  • フォーカス移動抑止について

    お世話になっております。 ブラウザの画面項目(テキストボックス等)間でフォーカスを移動する場合、移動元でonblur、移動先でonfocusが発生しますが、移動元のonblurで、特定の条件の場合だけフォーカス移動を抑止し、移動先onfocusを発生させないようにしたいのですが、何か方法はないでしょうか? 【環境】 ・IE6 【現在うまくいっていない方法】 現在、フォーカス移動を抑止するため、移動元のonblur内の処理で、「event.srcElement.focus()」を実行してますが、移動先のonfocus()も走ってしまう。(2回フォーカス移動することで元の画面項目にフォーカスが戻る) 【補足】 ・問題になっているのは、画面項目のonblur、onfocusで入力値のチェックや他画面項目との連動、色変更、エラーメッセージ表示等を行っておりonblurやonfocusが何度も走ってしまうと想定外の動きをしてしまいます。(場合によってはフォーカス移動の無限ループ) ・グローバル変数を屈指すれば想定外の動きをしないようにすることはできるかと思いますが、それ以外の方法で制御したい。 【現在うまくいっていない方法の動作確認用のとりあえず作ったサンプルプログラム】 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>フォーカス遷移抑止検証</title> <script type="text/javascript"> var iEventCount = 0; function onElemBlur() { if (++iEventCount > 10) return true;// 無限ループ抑止用 debug("blur : " + event.srcElement.value); event.srcElement.focus(); } function onElemFocus() { if (++iEventCount > 10) return true;// 無限ループ抑止用 debug("focus : " + event.srcElement.value); } function debug(msg) { var obElem = document.getElementById("debugmsg"); obElem.innerHTML += msg + "<br/>"; } </script> </head> <body> <input type="text" value="hoge1" onblur="onElemBlur()" onfocus="onElemFocus()" /> <br/> <input type="text" value="hoge2" onblur="onElemBlur()" onfocus="onElemFocus()" /> <br/> <br/> <br/> <span id="debugmsg" rows="10" cols="50" ></span> <br/> </body> </html> 長々と申し訳ありません。 よろしくお願いいたします。