当您在ASP.NET面板中声明要用作DefaultButton的Button时会发生什么?我知道ASP.NET会将Panel的内容呈现为div并将一堆内容传递给ViewState. ViewState中是否有处理渲染Button的click事件的
JavaScript?我认为ViewState就是那个 – 有关状态的信息.它是如何工作的?
解决方法
你对ViewState是正确的.它旨在保持页面和控件的值.那就是他们的状态.你可以确认它
here.
关于默认按钮,没有魔法.将一个javascript添加到div以绑定ENTER键事件.
让我们来看看!这段代码:
<asp:Panel ID="panel" runat="server" DefaultButton="button"> <asp:Button ID="button" runat="server" Text="this is the button" /> </asp:Panel>
渲染到这个:
<div id="panel" onkeypress="javascript:return WebForm_FireDefaultButton(event,'button')"> <input type="submit" name="button" value="this is the button" id="button"> </div>
这个javascript是由WebForms引擎生成的,但如果你很好奇,我们可以查找它:
function WebForm_FireDefaultButton(event,target) { if (event.keyCode == 13) { var src = event.srcElement || event.target; if (!src || (src.tagName.toLowerCase() != "textarea")) { var defaultButton; if (__nonMSDOMbrowser) { defaultButton = document.getElementById(target); } else { defaultButton = document.all[target]; } if (defaultButton && typeof(defaultButton.click) != "undefined") { defaultButton.click(); event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } } } return true; }
注意它如何测试当前聚焦的控件是否是textarea.这是因为textarea中的ENTER主要是新行,而不是提交.
原文地址:https://www.jb51.cc/js/150665.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。