【问题标题】:jquery asp.net, stopping postbackjquery asp.net,停止回发
【发布时间】: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


【解决方案1】:

看看事件对象的以下函数:

在你的情况下,你可以使用

e.preventDefault()

这将阻止默认操作发生。

【讨论】:

  • 谢谢。虽然 e.preventDefault 似乎在 IE 中不起作用,但确实如此: e.returnValue = false;感谢您的回复,我将对此表示赞同,但 Chris Dixon 首先回复了,所以我认为如果他将他的评论作为回复发表,我应该将他的评论标记为正确。再次感谢!
  • 我认为将 Chris 的回复标记为正确是...正确 :) 抱歉,我只扫描了 cmets。有趣的是它在 IE 中不起作用,我很确定我以前在 IE 中使用过 preventDefault 。哦,好吧,很高兴你成功了。
  • 是的,不知道为什么它在 IE 中不起作用,或者它的 IE 版本是否是问题所在。在这里找到它:stackoverflow.com/questions/1000597/… 再次感谢您的回复!
  • 啊,是的,我现在明白了。 IE 不支持您的 preventDefault(浏览器事件对象的成员)。 jQuery 事件对象的 preventDefault() 函数会为你解决这个问题(但你必须以不同的方式将你的文本框连接到 keypress 事件)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
相关资源
最近更新 更多