【发布时间】:2019-11-22 07:46:13
【问题描述】:
我有以下两个文件request.php 和response.php。我曾经使用按钮发送请求
<input type="button" value="Request message" onclick="post()"/>
但现在我正在考虑只使用“Enter”(13) 键。
代码有效,但它仅显示几毫秒的结果。理论上 keydown 功能正在工作并从响应中获取结果,bt 我不知道为什么只是很短的时间。
有什么建议吗?
request.php
<script type="text/javascript">
function post(){
$("#message").keydown(function (e) {
if (e.keyCode == 13) {
var message=document.getElementById("message").value;
$.post('response.php',{postmessage:message},
function(data){
var result = $('#post_message').html(data);
console
return result; });
}
});
}
</script>
<form>
Enter Message:<input type="text" id="message" name="message" onclick="post()"/><br/>
</form>
<div id="post_message"></div>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
response.php
<?php
function returnString() {
$post_msg = $_POST['postmessage'];
echo "Message entered ->", $post_msg ," <- here";
}
returnString();
?>
【问题讨论】:
-
消息在短时间内反映?
-
您不必编写
onclick函数,因为您已经使用if语句定义了keydown函数。 -
“但是它只显示几毫秒的结果” - 这是因为您的表单会以“正常”方式自动提交,因为您没有采取任何措施来防止这种情况发生.您应该在此处将提交处理程序绑定到您的表单,而不是尝试列出键盘事件 - 当光标在该字段中时按下 Enter 时,浏览器将自动提交仅包含单个文本字段的表单。然后以通常的方式阻止默认的提交操作(如果你不知道怎么做,去研究一下。)
-
另外,您当前的设置一开始就没有什么意义,因为每次点击该字段时,您都会添加一个新的额外 keydown 处理程序。
-
@misorude 你是对的,简单的提交比听键盘更有意义。这只是代码的一部分,这将在更大的页面中使用。感谢您的见解!
标签: javascript php jquery keydown enter