我在一个页面上有一个图片按钮,可以通过鼠标单击来触发它,但默认情况下也可以通过按下回车键来触发,我想禁用这个功能。
我知道在 asp:Button 中有 "UseSubmitBehaviour" 属性,那么在 asp:ImageButton 中有没有类似的方法可以实现相同的功能呢?
我在一个页面上有一个图片按钮,可以通过鼠标单击来触发它,但默认情况下也可以通过按下回车键来触发,我想禁用这个功能。
我知道在 asp:Button 中有 "UseSubmitBehaviour" 属性,那么在 asp:ImageButton 中有没有类似的方法可以实现相同的功能呢?
我假设您有某种输入控件,并且不希望用户意外按下回车键时自动提交。如果是这样,您可以将一个JavaScript onkeypress事件附加到每个要禁用此行为的控件上。
function disableEnterKey(e)
{
var key;
if (window.event) key = window.event.keyCode; // Internet Explorer
else key = e.which;
return (key != 13);
}
// In your aspx file Page_Load do the following foreach control you want to disable
// the enter key for:
txtYourTextBox.Attributes.Add("OnKeyPress", "return disableEnterKey(event);");
如果您需要完全禁用回车键提交表单,可以在页面上使用 <body>
标签的 OnKeyDown 处理程序。if (window.event.keyCode == 13)
{
event.returnValue = false;
event.cancel = true;
}
使用jQuery会更加简洁、容易,并且是推荐的方法。你可以使用以下代码创建一个扩展:
jQuery.fn.DisableEnterKey =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// return false for the enter key
return (key != 13);
})
})
};
// You can then wire it up by just adding this code for each control:
<script type="text/javascript" language="javascript">
$('#txtYourTextBox').DisableEnterKey();
</script>
如果您将内容放在 asp:Panel 中,可以使用 DefaultButton 属性将不同的按钮设置为默认按钮,这样您的图像按钮就不会被点击。
<asp:Panel runat="server" ID="pnl_Test" DefaultButton="btn_Test2">
<asp:ImageButton runat="server" ID="btn_Test1" />
<asp:Button runat="server" ID="btn_Test2" />
</asp:Panel>
使用 Kelsey 的答案(此答案已基于 Wiki)
……但请注意一些实现时需要考虑的事项。
如果您尚未使用 jQuery,我建议使用普通的 JavaScript 方法。如果您使用该方法,请直接返回 (keynum != 13),不要做一些愚蠢的事情,例如 if(true) return true; else return false;
您无需从代码后台分配 onkeydown。可以在标记中完成这项工作,这样做更加简洁明了。
不要禁用整个表单中的回车键。您可以仅在输入框中执行该操作,但如果在整个表单中执行该操作,则无法在文本区域中添加换行符。
如果您确实使用了 jQuery,我建议为您想要禁用的表单元素添加一个名为 "disableEnterKey" 的 CSS 类,并在文档就绪时对 $(".disableEnterKey") 调用 Kelsey 的 jQuery 方法。
即使您并不完全同意答案,也不要回答与任何人在 SO 上太相似的问题。即使答案很简单,成千上万的人可能已经做过同样的事情。这是“抄袭”。这与成为“削减者”或“告密者”类似……这很糟糕。
(此答案已基于 Wiki,因为该问题线程变得愚蠢了)
javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();
"。document.getElementById('imageClicked').setAttribute('value', 'true');
然后,在服务器处理完回发请求后,重置隐藏字段的值:
document.getElementById('imageClicked').setAttribute('value', 'true');
ImageButton
向下移动,使其不再是标记中的第一个按钮,并使用CSS正确定位它,这应该可以解决您的问题。我上周也修复了完全相同的问题,这个方法对我有效。我选择了这个解决方案,因为它不需要JavaScript才能正常工作。<script type="text/javascript" language="javascript">
$(document).ready(function {
$("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>
你想要类似这样的东西
<form ...>
<!-- some code here -->
<button style='display:none' onclick='return false'>here comes the magic</button>
<button>normal button </button>
</form>