【发布时间】:2013-04-22 11:24:23
【问题描述】:
我有一个文本框,我希望用户能够在 TextBox 中输入内容,当他们按下回车键时,我希望 jQuery 对 Web 方法进行 ajax 调用。
问题是,当用户按回车键时,该方法被调用,但随后页面因返回而刷新。我试过使用return false,但没有结果。
代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script language="javascript">
function serviceCall(getText) {
$.ajax({
type: "POST",
url: 'ActiveDirectoryAutoFillWebService.asmx/TestMethod',
data: "{'getId':'+ getText +'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#divResult").html(msg.d);
},
error: function (e) {
$("#divResult").html("WebSerivce unreachable " + e.name + " " + e.message);
}
});
// return false; This does not work
}
function searchKeyPress(e) {
if (typeof e == 'undefined' && window.event) { e = window.event; }
if (e.keyCode == 13) {
serviceCall(e)
// return false; This does not work
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="divResult" style="margin-top: 20px;"></div>
<asp:TextBox ID="tbSearchName" runat="server" onKeyPress="searchKeyPress(event); "></asp:TextBox>
</form>
</body>
</html>
如果有人知道我如何做到这一点,请告诉我。
【问题讨论】:
-
所以你不想刷新页面?这就是你想要的吗?
-
您确定 searchKeyPress 已经达到 serviceCall 了吗?你试过 e.preventDefault() 吗?
-
opensourcelover:是的,我不希望当用户在文本框中按下回车键时整个页面都刷新/回发。相反,如果用户在文本框中点击回车,它应该调用 serviceCall 方法(调用 web 方法)
-
Chris Dixon: 是的,我确信 serviceCall 方法被调用了(我在 JS 和后面的代码中放置了断点。另外,我可以在页面回发之前看到打印出来的消息) .我不知道 e.preventDefault()。你能解释一下这是什么以及它有什么帮助吗?
-
克里斯,e.preventDefault 似乎在 IE 中不起作用,但它确实让我找到了 e.returnValue = false;。如果您将此作为回复发布,我可以将其标记为正确
标签: javascript jquery asp.net javascript-events