2017-08-25 13 views
0

私はこのコードを持っており、ユーザーが入力した内容をチャットボックスに追加することができます。それは仕事をしますが、後に空の値を追加します。これをどうやって止めるのですか?なぜ入力は追加され続けますか?

function updateChat() { 
    $("div#chatmessages").append("<div>" + $("#message").val() + "</div>"); 
} 


    var elem = $('#message'); 

    // Save current value of element 
    elem.data('oldVal', elem.val()); 

    // Look for changes in the value 
    elem.bind("propertychange change click keyup input paste", function(event){ 
    // If value has changed... 
    if (elem.data('oldVal') != elem.val()) { 
     // Updated stored value 
     elem.data('oldVal', elem.val()); 
     $("#userSubmitTxt").click(function(){ 

     console.log($('#message').val()); 
     $("#chatmessages").append("<div>Me:" + $('#message').val() + "</div>"); 
     $("#chatmessages").scrollTop($("#chatmessages")[0].scrollHeight); 
     if(elem.val().search(/nothing/i) >= 0){ 
      console.log("Nothing"); 
      $("#chatmessages").append("<div>Linodo: Well, for starters, have you thought about the SAT?</div>"); 
     } 
     $('#message').val(""); 

     }); 
    } 
    else { 
     return false; 
    } 
    }); 
+0

' $を追加してください場合は、あなたでは

" あなたは" へのメッセージを設定する場合を含む*その要素にハンドラをクリックしてくださいユーザーがタイプするたびに、そして各クリックがすべての*ハンドラーを実行します。 – nnnnnn

+0

私は '.one(" click "、function(){})を使用しましたが、それでも起こります。 –

+0

イベントハンドラをネストしないでください。 '.click()'をバインドします( '.one()'を使用しないでください)*キーアップハンドラの外側*。 – nnnnnn

答えて

0

これは、リスナーがすべての変更をリッスンするためです。 。(...)をクリックし `*追加的に結合する "(#userSubmitTxt ")句が

if(elem.data('oldVal') != elem.val() || $('#message').val() != "") 
+0

動作していないようです。しかし、おかげで、Mekuanent –

+0

ああ申し訳ありませんが、私は置くつもりだった|| && –

+0

編集を確認してください - Abdul Diaz –

関連する問題