2017-01-05 11 views
1

チャットボックスの入力フィールドonfocusイベントをキャッチして、ユーザーがメッセージを読んでいることを知りたい。 onfocusイベントがトリガーされると、メッセージが見られたサーバーにajaxを送信します。onfocusイベントの起動を停止するにはどうすればよいですか?

いつも私は試してみますが、私はいつもonfocusイベントを常に発しています。

<input type="text" name="content<?php echo $id; ?>" placeholder="Type message..." onfocus="chatboxInputInFocus(<?php echo $id; ?>)"/> 

とJS:私は何を得る

function chatboxInputInFocus(swap_id){ 
    alert(swap_id); 
    return; 
} 

は一定のアラートです。入力が集中する瞬間だけを捕まえるには? JSまたはJquery。

+0

jqueryまたはvanilla jsのみを使用できますか? –

答えて

2

デバッグにalert()を使用しないでください。フォーカスがトリガーされるためです。
代わりにconsole.log()を使用すると、コードが機能します。あなたがjQueryの便利な.one方法を使用することができます

function chatboxInputInFocus(swap_id){ 
 
     console.log(swap_id); 
 
     return; 
 
    }
<input type="text" name="content123" placeholder="Type message..." onfocus="chatboxInputInFocus(123)"/>

+1

私は同じ答えを入力していました。アラートの問題は、ポップアップした後、そのアラートにフォーカスが移り、ユーザーがそれを閉じると、フォーカスが入力フィールドに戻されるということです。したがって、無限ループ。 – MiChAeLoKGB

+0

私は同じ答えを入力していました。デバッグに 'alert()'を使用する際の問題は次のとおりです。アラートがポップアップした後にフォーカスが移動し、ユーザがそれを閉じると、フォーカスは入力フィールドに戻されます。そして、彼はonfocusイベントを検出しようとしているとき、彼は無限ループを取得します。 *(タイプミスを修正)* – MiChAeLoKGB

1
+0

その機能は便利ですが、実際には彼が望むことを行う正しい方法ではありません。デバッグのために 'alert()'を避けるべきです。 – MiChAeLoKGB

+0

それは彼の問題ではありません。イベントは発砲し続けます。コンソールを使うのは、たとえそれが正しいデバッグ方法であっても、彼の実際の問題だけをマスクすることです。 –

+0

しかし、彼は 'alert()'を使っているので、彼のイベントは発砲し続けるでしょう。もし彼が警告を使わなかったら、彼はこの問題を抱えませんでした。 – MiChAeLoKGB

0

ONFOCUS関数のparamでイベントオブジェクトを渡すとのpreventDefaultを行うためにここに必要があります。 function chatboxInputInFocus(swap_id){ alert(swap_id); ev.preventDefault(); return; } onfocus = "chatboxInputInFocus(event、id)"

関連する問題