0

PHP、MySQL、およびいくつかの JavaScript で完全に作成されたチャット スクリプトがあります。

チャット ウィンドウ (2 つのフレームから作成) では、1 つ目はユーザー メッセージを表示し、2 つ目はテキスト入力エリアです。

フレームは関数で接続されていますtarget

echo "< frame name=\"chatviewpage\" src=\"$chatviewurl\" scrolling=\"no\">";
echo "< frame name=\"chattextpage\" target=\"chatviewpage\" src=\"$chattexturl\" scrolling=\"no\">";

そのため、ユーザーがメッセージを送信すると、chatviewフレームに自動的に表示されます。では、ユーザーが「Enter」を押すとメッセージが送信されるように、chattextpage既に関数を使用しています。onkeypress

ここで、相棒がメッセージを入力しているときにユーザーに知らせる機能を追加したいと思います。前の質問で必要なスクリプトを見つけましたが、それを統合する方法がわかりません。

スクリプトは以下のとおりです。

<script type="text/javascript" language="javascript">
var timer = 0;
function reduceTimer(){
    timer = timer - 1;
    isTyping(true);
}
function isTyping(val){
    if(val == 'true'){
        document.getElementById('typing_on').innerHTML = "User is typing...";
    }else{

        if(timer <= 0){
            document.getElementById('typing_on').innerHTML = "No one is typing at the moment.";
        }else{
            setTimeout("reduceTimer();",500);
        }
    }
}
</script>
<label>
    <textarea onkeypress="isTyping('true'); timer=5;" onkeyup="isTyping('false')" name="textarea" id="textarea" cols="45" rows="5"></textarea>
</label>
<div id="typing_on">No one is typing at the moment.</div>

よく説明されているといいのですが、誰か助けてもらえますか?

4

2 に答える 2

0

キーが押されたとき:

  1. 既存のタイマーがあるかどうかを確認する

  2. タイマーを開始する場合は停止します。

タイマーが切れたら、サーバー メソッドを呼び出します。

    var searchTimeout;
    document.getElementById('searchBox').onkeypress = function () {
        if (searchTimeout != undefined) clearTimeout(searchTimeout);
        searchTimeout = setTimeout(callServerScript, 250);
    };
    function callServerScript() {
        // your code here
    }
于 2013-10-12T22:55:01.103 に答える
0

基本的にこれは、人がキーを押しているか押していないかに応じて、変数を true または false に設定することです。

    //setup before functions
var delay = (function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout (timer);
        timer = setTimeout(callback, ms);
    };
})();

$('textarea').on('change',function(){
   delay(function(){
      //make your server call here
   },2000);
});
于 2013-10-12T22:56:16.927 に答える