我正在为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)
由于缺少缩进,很难看到,但你的功能有点混乱。例如,您只在click
处理程序中分配keypress
处理程序。我清理了这样的代码:
$("#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