2014-01-12 23 views
0

我正在为Chatbot编写一些代码,除了我在我的文本框中编写的文本没有出现在我的容器中之外,一切都很顺利。这里是在容器中出现的文本中涉及的所有代码:文本未出现在容器中?

<div id = "controls"> 
<textarea id = "textbox" placeholder = "Enter your message here..."></textarea> 
<button id = "send">Send</button> 
<br /> 
<input checked type="checkbox" id = "enter" /> 
<label>Send on enter</label> 
</div> 

$("#textbox").keypress(function(event){ 
if (event.which == 13){ 
if ($("#enter").prop("checked")){ 

$("#send").click(); 
event.preventDefault(); 
} 

$("#send").click(function(){ 

var username = "<span class = 'username' =>You: </span>"; 

var newMessage = $("#textbox").val(); 

$("#textbox").val(""); 

var prevState = $("#container").html(); 


if (prevState.length > 3){ 
prevState = prevState + "<br />"; 
} 

$("#container").html(prevState + username + newMessage); 


    } 
    }); 

有没有人知道为什么这段代码不工作?

+0

将您的代码准备处理'$(函数(){})内;' –

回答

0

因为没有缩进,所以很难看,但是你的功能有点混乱。例如,您只需在keypress处理程序中分配click处理程序。我清理了这样的代码:

$("#send").click(function (event) { 
    send(); 
}); 

$("#textbox").keypress(function (event) { 
    if (event.which == 13 && $("#enter").prop("checked")) { 
     send(); 
    }  
}); 

function send() { 
    var username = "<span class = 'username' =>You: </span>"; 
    var newMessage = $("#textbox").val(); 
    $("#textbox").val("");  
    var prevState = $("#container").html(); 
    if (prevState.length > 3) { 
     prevState = prevState + "<br />"; 
    } 
    $("#container").html(prevState + username + newMessage); 
} 

这里是一个小提琴,所以你可以尝试一下:DEMO