我在这里研究了这个问题并尝试了一个不起作用的明显解决方案,所以这里是:
我有一个非常复杂的表单,包括其他控件,三个自动填充文本框。
我还有一个客户似乎无法停止在文本框中输入值并点击Enter键从自动完成列表中选择所需的值。
当他们按Enter键时,表单中的第一个图像按钮会触发,执行完全不同的操作。所以对他们来说,形式是破碎的。
我需要做的是阻止Enter键触发这些图像按钮(表单中有10个)。
我在Page_Load和Page_LoadComplete中尝试了以下代码,但这些代码都不起作用:
imgbtn1.Attributes.Add("onkeydown", "return (event.keyCode!=13);")
任何可以为我节省一些毛发的建议都值得赞赏。
答案 0 :(得分:3)
这里可以找到一个好的解决方案:
Disable Button click, ImageButton click and/or form submit on Enter Keypress
从链接添加标记
<form id="form1" runat="server">
<input type="submit" style="position:absolute;left:-100px;top:-100px;width:0px;height:0px;" onclick="javascript:return false;" />
<!-- other form controls below this line -->
</form>
答案 1 :(得分:1)
您是否检查了这两个参考文献
http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx
http://www.webcheatsheet.com/javascript/disable_enter_key.php
他们基本上正在做同样的事情,只是他们正在把它挂到另一个事件上。还要确保您的Javascript是万无一失的,即如果javascript有一些错误,那么您的最终结果可能与预期不符。
答案 2 :(得分:0)
Subhash Dike发布的第二个链接(Disable Enter Key)为我工作。我有两个ImageButtons,当使用这个函数(从原始位修改一点)时,它们都不会触发回发,这很棒。
document.onkeypress = function (evt) {
return ((evt) ? evt : ((event) ? event : null)).keyCode != 13;
};
答案 3 :(得分:0)
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Page.Form.DefaultButton = BtSearch.UniqueID
If Not IsPostBack Then
' ...............
End If
End Sub
答案 4 :(得分:0)
我有类似的问题。 Listview1.ImageButton响应了ENTER。 我们真的希望SAVE能够发生(或者没有,但不良行为正在重新加载页面并使它们变得脾气暴躁)
为窗口设置处理程序以捕获事件。我在docReady()
中这样做function docReady() {
$(document).keydown(mapKeyCode);
};
在该处理程序中,找到要捕获的密钥代码(输入为13)
https://css-tricks.com/snippets/javascript/javascript-keycodes/
function mapKeyCode(event) {
{
if (event.keyCode == 13) {
//event.stopPropagation();
//event.preventDefault();
__doPostBack('ctl00$cp1$InventoryPieces$btnSubmit', '');
}
}
event.StopPropogation将不会发生任何事情。只需吃掉按键即可。那可能就是你想要的。您仍然可以在下面调用ajax方法,这不是事件的一部分。
event.PreventDefault应该阻止事件执行正常操作。看到这条线路被注释掉了,我遇到了麻烦。有关preventDefault和ENTER的深入讨论,请点击此处。
这第3行是支付我的人想要在他们按下ENTER键时发生的事情,即使他们可能应该击中标签。我试过(#)。触发器()并没有太多运气。检查元素,我看到它正在调用__postback,所以我把它粘贴进去。我有理由确定()。如果我弄清楚我做错了什么,触发器会工作,我只是采取了另一条路线。
这对我很苛刻,但它实现了目标。
希望它有所帮助。