在BODY
标记内:
<asp:Panel ID="nmSearch" CssClass="searchBox" runat="server" DefaultButton="HiddenSearchNM">
<input type="text" runat="server" value="" placeholder="Search" id="searchB" class="styledTB searchB floatLeft" />
<a href="JavaScript:void(0);" onclick="SearchNMClick();" title="Search" class="styledBtnSearch searchAnchor floatLeft defaultLinks">
<asp:Image ImageUrl="~/images/searchWhite.png" CssClass="searchImg" runat="server" ToolTip="Search" AlternateText="Search" />
</a>
<asp:ImageButton ID="HiddenSearchNM" runat="server" CssClass="hideContent" ClientIDMode="Static" />
</asp:Panel>
在HEAD
标记内:
<script>
function SearchNMClick() {
document.getElementById('HiddenSearchNM').click();
}
</script>
我在控制台中看到以下错误:
Uncaught TypeError: Cannot read property 'click' of null
SearchNMClick
onclick
后面的C#代码将从Enter
或点击:
protected void HiddenSearchNM_Click(object sender, EventArgs e)
{
//MessageBox.Show("SEARCH NM");
strSMain = searchB.Value;
Response.Redirect("results.aspx?searchtext=" + strSMain +"&folderid=0&searchfor=all&orderby=title&orderdirection=ascending");
}
但是当我在文本框或点击按钮时按Enter键时,我收到上面的错误。
如何解决错误。
太奇怪了,当我检查HTML源代码时,我看到了这一点(不确定为什么要更改ID):
<input type="image" name="ctl00$CUSTOM_Area_Top$HiddenSearchNM" id="ctl00_CUSTOM_Area_Top_HiddenSearchNM" class="hideContent" ClientIDMode="Static" src="" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$CUSTOM_Area_Top$HiddenSearchNM", "", true, "", "", false, false))" style="border-width:0px;" />
答案 0 :(得分:3)
使用Page
指令设置静态ID
<%@ Page ClientIDMode="static" %>
这应该适用于你的id选择器。
另外,请检查您ImageButton
的呈现HTML。如果一切设置正确,则应保留ID
。
答案 1 :(得分:3)
您可以将JS功能更改为:
function SearchNMClick() {
document.getElementById('<%# HiddenSearchNM.ClientID %>').click();
}