use*_*119 8 javascript asp.net viewstate
当您声明Button要DefaultButton在ASP.NET中使用时会发生什么Panel?我知道ASP.NET会将Panel的内容呈现给a div并将一堆东西传递给ViewState.ViewState中是否有处理渲染Button的click事件的JavaScript?我认为ViewState就是那个 - 有关状态的信息.它是如何工作的?
And*_*lil 13
你对ViewState是正确的.它旨在保持页面和控件的值.那就是他们的状态.你可以在这里确认一下.
关于默认按钮,没有魔法.div为了绑定ENTER键事件,添加了一个javascript .
让我们来看看!这段代码:
<asp:Panel ID="panel" runat="server" DefaultButton="button">
<asp:Button ID="button" runat="server" Text="this is the button" />
</asp:Panel>
Run Code Online (Sandbox Code Playgroud)
渲染到这个:
<div id="panel" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'button')">
<input type="submit" name="button" value="this is the button" id="button">
</div>
Run Code Online (Sandbox Code Playgroud)
这个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;
}
Run Code Online (Sandbox Code Playgroud)
注意它如何测试当前聚焦的控件是否为a textarea.这是因为一个内部的ENTER textarea主要是一个新行,而不是一个提交.
| 归档时间: |
|
| 查看次数: |
5043 次 |
| 最近记录: |