当用户在文本框中按下返回时,我可以取消回发吗?
Posted
技术标签:
【中文标题】当用户在文本框中按下返回时,我可以取消回发吗?【英文标题】:Can I cancel postback when user presses return in a textbox? 【发布时间】:2010-09-17 15:27:19 【问题描述】:我有一个textbox
,其输入由 jQuery 处理。
$('input.Search').bind("keyup", updateSearchTextbox);
当我在文本框中按Enter
时,我会收到一个回发,这会搞砸一切。如何捕获该 Enter 并忽略它?
(只是为了抢占一个可能的建议:文本框必须是 <asp:textbox ... />
- 我不能用 <input ... />
替换它。)
【问题讨论】:
【参考方案1】:当您按 Enter 时,您的浏览器会自动提交表单。要取消此操作,请将 return false 添加到您的 updateSearchTextBox 函数。
如果这不起作用,试试这个:
<script language="javascript">
function disableEnterKey(e)
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
return (key != 13);
</script>
在你的代码隐藏中:
textbox.Attributes.Add("OnKeyPress","return disableEnterKey(event)");
【讨论】:
内联脚本事件很糟糕......避免它们。我知道 asp.net 喜欢它们,但是……grrrr 是我生命中的祸根【参考方案2】:Ben Nadel 有一篇关于如何使用 JQuery 执行此操作的精彩博文:http://www.bennadel.com/blog/1364-Ask-Ben-Optimizing-Form-Inputs-For-Numeric-Keypad-Usage.htm
【讨论】:
【参考方案3】:感谢所有回复的人。这是我的新 updateSearchTextbox
函数,效果很好:
updateSearchTextbox = function(e)
/// <summary>
/// Handles keyup event on search textbox
/// </summary>
if (e.which == "13")
// update now
updateConcessions();
// Don't post back
return (false);
else
delayedUpdateConcessions();
【讨论】:
以上是关于当用户在文本框中按下返回时,我可以取消回发吗?的主要内容,如果未能解决你的问题,请参考以下文章