我在页面中有一个图像按钮,可以在鼠标点击时触发,默认情况下它会在按下时触发,我也要禁用它。
我知道asp:Button中的“UseSubmitBehaviour”属性,有没有办法在asp中做同样的事情:ImageButton?
答案 0 :(得分:11)
我假设您有某种输入控件,并且当用户意外点击回车键时您不希望自动提交输入按键。如果是这样,您可以将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);");
如果您需要完全禁用Enter键提交表单。 case使用页面上<body>
标记上的OnKeyDown处理程序。
javascript代码:
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>
答案 1 :(得分:7)
如果您将内容放在 asp:Panel 中,则可以使用 DefaultButton 属性将其他按钮设置为默认值,这样您的图片按钮就不会被点击。< / p>
<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>
在此示例中,当您按Enter键时会点击 btn_Test2 ,通常会点击 btn_Test1
答案 2 :(得分:2)
使用Kelsey的答案(这个答案是wiki'ed)
...但请在实施时注意一些事项。
如果您还没有使用jQuery,我建议使用普通的旧javascript方法。如果你使用那个方法,只需返回(keynum!= 13)不要做一些愚蠢的事情,如果(true)返回true;否则返回false;
您不必从后面的代码中分配onkeydown。这可以在标记中完成,当你这样做时它会更加清晰。
请勿在整个表单中停用回车键。您只能在输入中执行此操作,但如果您在整个表单中执行此操作,则无法在textarea中添加回车。
如果您使用jQuery,我建议添加一个名为“disableEnterKey”的CSS类,并将其分配给您要禁用的表单元素,然后在$(“。disableEnterKey”)上调用Kelsey的jQuery方法。准备好文件。
即使您不完全同意答案,也不要对SO上的任何人回答太相似。即使答案很简单,成千上万的人也可能做了同样的事情。这是“复制”。这类似于“刀具”或“喋喋不休”......这很糟糕。
(这个答案一直是社区维基,因为这个问题线程变得很愚蠢)
答案 3 :(得分:2)
当您按Enter键时,表单将执行它在页面上找到的第一个按钮。如果您可以将ImageButton
向下移动到页面以便它不再是标记中的第一个按钮,并使用CSS来正确定位它,这应该可以解决您的问题。我上周修复了同样的事情,这对我有用。我使用此解决方案是因为它不需要JavaScript才能正常工作。
答案 4 :(得分:1)
请改用asp:image。然后在onclick“javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();
”
设置隐藏字段的值(使用javascript)告诉服务器端代码图像被点击。
document.getElementById('imageClicked').setAttribute('value', 'true');
然后,在处理服务器上的回发结束时,重置hiddenField的值:
document.getElementById('imageClicked').setAttribute('value', 'true');
答案 5 :(得分:1)
你想要像
这样的东西<form ...>
<!-- some code here -->
<button style='display:none' onclick='return false'>here comes the magic</button>
<button>normal button </button>
</form>
答案 6 :(得分:1)
请参阅以下链接。这可以解决所有默认按钮提交问题。 http://weblog.kevinattard.com/2011/08/aspnet-disable-submit-form-on-enter-key.html
答案 7 :(得分:0)
请使用此代码
<script type="text/javascript" language="javascript">
$(document).ready(function {
$("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>