我创建了一个聊天机器人,询问用户的用户名,然后将其存储为变量。但是,在我的一个对话树中,我必须要求用户输入另一个答案,我让它工作,以便用户可以通过按钮点击进行导航。
在用户名捕获时,"输入栏"从控件中删除,我附加每个消息功能的按钮。我尝试做相反的操作(删除按钮并添加一个输入),这确实有效,但我无法做任何事情的输入。它不会在输入时提交,它不会保存变量,在我的试验和错误中,我发现如果我尝试设置一个varg那个msg值,它会更新用户名' s。
以下是我检索姓名的功能
} else if (b_val == "my_practicum") {
send_msg("What is the email address you submitted your practicum with? By having this we can give you a status update!" , function() {
$("#controls").append(
'<textarea id="message" class="practicum-bar" placeholder="Type Your Name - Then Hit Enter"></textarea><button style="display:none;" id="sendMsg">Send</button>' );
email = msg;
console.log(email);
});
}
}
以下是我尝试捕获电子邮件的功能
$query = 'new';
$searched = "New York Yankees in New York";
$r = preg_replace("/($query)/i", "<span class='hilight'>$1</span>", $searched);
echo'r is: ',$r;
如果你想看到这个,我的 JSFiddle。你可以通过这个用户路径看到它
输入姓名&gt;认证&gt;我的实习&gt;输入电子邮件
对此有任何帮助表示赞赏!谢谢!
答案 0 :(得分:0)
看起来您通过执行controls
删除$("#controls").empty();
并且您想要向动态创建的元素添加事件,因此您必须将上下文添加到.on
的第二个参数。第二次单击输入时立即查看you can see the console.log in the fiddle,因为jquery现在可以检测到该项目。
$("#controls").on("keypress", "#message", function(event){
if (event.which == 13) {
console.log("my test");
if ($("#slideThree").prop("checked")) {
$("#sendMsg").click();
event.preventDefault();
//*edit you can now change variables outside of scope*
}
}
});
现在您可以进行事件处理。