プロが教えるわが家の防犯対策術!

テキストボックスが2つあり(AとBとします)、
AにはonBlur時に、BにはonFocus時に処理を行うようにしています(実行処理はそれぞれ別物)。

この状態でAからBにカーソルを移すと、
BのonFocus処理を行い、その後AのonBlur処理を行ってしまいます。

AのonBlur→BのonFocusという順番で処理をしたいのですが、これは可能なのでしょうか?
また、イベントハンドラの発生順序(処理順序?)には決まりがあるのでしょうか?

A 回答 (2件)

処理が並行して行う という部分が分かりませんでした。


onBlurが終わる前にonFocusが終わってしまう という部分も
分かりませんでした。

この回答への補足

変なたとえかもしれませんが、「ご飯を食べる」という行動と「新聞を読む」という行動を考えてみましょう。

処理を並行して行う、というのは
「ご飯を食べながら新聞を読む」イメージです(行儀は悪いですが)。
余談ですが、並行に対する概念として「連続」という処理方法もあります。
これは、「ご飯を食べ終わってから新聞を読む」というイメージです。

『onBlurが終わる前に~』については、
「onBlur処理が完了する前にonFocus処理が完了する」
ときっちりと書けばよかったかもしれません。

ご飯と新聞のたとえで言うと、
「ご飯を食べている途中で新聞を読み始め、先に新聞を読み終えてしまう」といったところです。

補足日時:2001/03/09 09:34
    • good
    • 0

<input id=a onBlur=alert("aB")>


<input id=b onFocus=alert("bF")>

↑のソースだと、a から b にカーソルを移すと
alert("aB") → alert("bF")
となりました。

puntoabartさんはもっと複雑な処理をさせていて、
その中で逆になってしまっているんだと思います。
たぶん思いどうりにできますよ。

この回答への補足

確かに、onBlur処理はforやifがたくさん入った複雑なものになっています。

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

補足日時:2001/03/08 09:12
    • good
    • 0

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