我们有一个代码:
<asp:Panel runat="server" DefaultButton="ButtonNext">
...a lot of different controls...
<asp:Button runat="server" ID="ButtonPrev" OnClick="ButtonPrev_OnClick" Text="Prev"/>
<asp:Button runat="server" ID="ButtonNext" OnClick="ButtonNext_OnClick" Text="Next"/>
</asp:Panel>
当焦点放在ButtonPrev
并按下Enter
时,会点击DefaultButton
而不是ButtonPrev
:
我该怎么做才能修改此行为?我正在寻找简单的解决方案。
我知道我可以在ButtonPrev
中包裹Panel
:
<asp:Panel runat="server" DefaultButton="ButtonNext">
<asp:Panel runat="server" DefaultButton="ButtonPrev">
<asp:Button runat="server" ID="ButtonPrev" OnClick="ButtonPrev_OnClick" Text="Prev"/>
</asp:Panel>
<asp:Button runat="server" ID="ButtonNext" OnClick="ButtonNext_OnClick" Text="Next"/>
</asp:Panel>
这是一个解决方案,但它会导致样式问题(额外的div
)。
我知道我可以使用JavaScript:
<asp:Panel runat="server" DefaultButton="ButtonNext">
<asp:Button runat="server" ID="ButtonNext" OnClick="ButtonNext_OnClick" Text="Next"/>
<asp:Button runat="server" ID="ButtonPrev" CssClass="DisableDefaultButton" OnClick="ButtonPrev_OnClick" Text="Prev"/>
</asp:Panel>
<script type="text/javascript">
$('.DisableDefaultButton').on('keypress',
function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) { //Enter keycode
$(this).click();
e.preventDefault();
}
}
)
</script>
我现在正在使用此解决方案,但我不喜欢它。
有什么我没看到的吗?