我在页面中有一个图像按钮,可以在鼠标单击时触发,默认情况下它会在输入时触发,我也想禁用它。
我知道 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);");
如果您需要完全禁用 Enter 键提交表单。<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>
如果您将内容放在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>
在此示例中,当您按 Enter 键时将单击btn_Test2,通常会单击btn_Test1
使用凯尔西的答案(这个答案是 wiki'ed)
...但是在实施时请注意一些事项。
如果您还没有使用 jQuery,我会推荐普通的旧 javascript 方法。如果您使用该方法,只需 return (keynum != 13) 不要做一些愚蠢的事情,例如 if(true) return true; 否则返回假;
您不必从后面的代码中分配 onkeydown 。这可以在标记中完成,当你这样做时它会更干净。
不要禁用整个表单中的回车键。您只能在输入中执行此操作,但如果您在整个表单中执行此操作,您将无法在文本区域中添加回车。
如果您确实使用 jQuery,我建议添加一个名为“disableEnterKey”的 CSS 类并将其分配给您要禁用的表单元素,然后在准备好的文档中对 $(".disableEnterKey") 调用 Kelsey 的 jQuery 方法。
即使您不完全同意答案,也不要与 SO 上的任何人回答太相似。即使答案很简单,而且可能有成千上万的人做过同样的事情。是“抄袭”。这类似于成为“切割者”或“流言蜚语”......这很糟糕。
(这个答案已经被社区维基编辑了,因为这个问题线程变得很愚蠢)
当您按 Enter 时,表单将执行它在页面上找到的第一个按钮。如果您可以将ImageButton
页面进一步向下移动,使其不再是标记中的第一个按钮,并使用 CSS 正确定位它,这应该可以解决您的问题。我上周修复了同样的问题,这对我有用。我选择了这个解决方案,因为它不需要 JavaScript 才能正常工作。
请改用 asp:image。然后在 onclick " javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();
"中放置一些 javascript 代码
设置隐藏字段的值(使用 javascript)以告诉服务器端代码该图像已被单击。
document.getElementById('imageClicked').setAttribute('value', 'true');
然后,在服务器上处理回发结束时重置 hiddenField 的值:
document.getElementById('imageClicked').setAttribute('value', 'true');
你想要类似的东西
<form ...>
<!-- some code here -->
<button style='display:none' onclick='return false'>here comes the magic</button>
<button>normal button </button>
</form>
请参阅以下链接。这可以解决所有默认按钮提交问题。 http://weblog.kevinattard.com/2011/08/aspnet-disable-submit-form-on-enter-key.html
请使用此代码
<script type="text/javascript" language="javascript">
$(document).ready(function {
$("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>