javascript – Panel的DefaultButton属性如何工作?

前端之家收集整理的这篇文章主要介绍了javascript – Panel的DefaultButton属性如何工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当您在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.f2er.com/js/150665.html

猜你在找的JavaScript相关文章