【发布时间】:2012-01-04 01:39:37
【问题描述】:
我有一个需要通过 Javascript 函数单击的 asp 图像按钮。 文本框的按键应该在按下回车键时触发此图像按钮服务器端事件。 代码如下:-
标记
<asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="images/butt_searchoff.png"
class="sb_search" ToolTip="Search the Database" AlternateText="Search" OnClick="ImageButton3_Click" OnClientClick="SetExpandedCount()"/>
<input id="tbSearch" runat="server" class="sb_input" type="text" autocomplete="off" onkeypress="return OverridePostBackOnEnter(event, '" & ImageButton3.ClientID & "');" />
我想将 ImageButton3 ClientId 作为参数传递给名为 OverridePostBackOnEnter 的 Javascript 函数。
Javascript 看起来像这样:
function OverridePostBackOnEnter(event, ctrl) {
if (event.keyCode == 13) {
alert(ctrl);
if ($.browser.mozilla) {
__doPostBack(ctrl, 'OnClick'); //for IE
}
else {
//but for other browsers you should use
__doPostBack(ctrl, 'OnClick');
}
}
};
我发现的是 a) 我无法获得要传递的正确 ClientId,我只是得到 undefined 或 null。
和 b) 如果我硬编码并将 ctrl 更改为“cmain_ctl00_ImageButton3”,则 __dopostback 不会为 ImageButton3 调用我的服务器端代码。
对此的任何帮助将不胜感激。
编辑
好的,我认为我已经找到了解决方案,并认为我应该更新帖子以防万一有人需要。
首先我将 ImageButton3 上的 'ClientIdMode' 设置为 'Static'
<asp:ImageButton ID="ImageButton3" ClientIDMode="Static" runat="server" ImageUrl="images/butt_searchoff.png" class="sb_search" ToolTip="Search the Database" AlternateText="Search" OnClick="ImageButton3_Click" OnClientClick="SetExpandedCount()"/>
这允许我将按钮的 id 传递给函数“OverridePostBackOnEnter”
<input id="tbSearch" runat="server" class="sb_input" type="text" autocomplete="off" onkeypress="return OverridePostBackOnEnter(event, 'ImageButton3');" />
然后我的 Javascript 变成:
function OverridePostBackOnEnter(event, ctrl) {
if (event.keyCode == 13) {
if ($.browser.mozilla) {
var overridctrl = document.getElementById(ctrl);
__doPostBack(overridctrl.name, ''); //for IE
}
else {
//but for other browsers you should use
var overridctrl = document.getElementById(ctrl);
__doPostBack(overridectrl.name, '');
}
}
};
通过查看“yourForm._EVENTTARGET.value”和“yourForm._EVENTARGUMENT.value”,我可以看到这些值没有被设置。通过使用“document.getelementId”并传递“control.name”设置这些值并启用“__dopostpack”来调用服务器端事件。
【问题讨论】:
标签: javascript asp.net dom-events