点击“输入”后,我想点击“搜索”按钮。
这是我的HTML
<input type="text" runat="server" id="txtSearch" onkeypress="searchKeyPress(event);"
<input type="button" runat="server" style="padding:5px;" id="butSearch" onserverclick="butSearch_Click" value="Search" disabled/>
这是我正在使用的javascript
function searchKeyPress(e) {
if (typeof e == 'undefined' && window.event) { e = window.event; }
if (e.keyCode == 13) {
document.getElementById("butSearch").click();
}
}
但是我收到了错误
'Uncuaght TypeError:Cannot call method click of nul'
也许就我为什么会遇到这个错误提出建议,是否有更好的替代方案?
答案 0 :(得分:3)
是否需要runat="server"
?你得到错误,因为调用searchKeyPress
时,你的按钮不存在(还)。要么是在DOMContentLoaded之前触发,要么是asp.net用你的按钮做了一些时髦的东西,让它完全脱离DOM。
还有一些常见的JavaScript提示:
function searchKeyPress(e) {
// a much cleaner "use var, or assign if not defined":
e = e || window.event;
// strict comparison:
if (e.keyCode === 13) {
// verify we have a button:
var btn = document.getElementById("butSearch");
if (btn) {
btn.click();
} else {
// btn does not exist. arbitrary code goes here
}
}
}
答案 1 :(得分:1)
在ASP.NET中,生成的客户端ID不是您在ASP.NET标记中看到的那些(查看生成的源代码)
您需要调用控件的ClientID
属性才能通过javascript或jQuery访问它。
您可以尝试:
function searchKeyPress(e) {
if (typeof e == 'undefined' && window.event) { e = window.event; }
if (e.keyCode == 13) {
document.getElementById('<%=butSearch.ClientID%>').click();
}
}
如果您了解如何生成ASP.NET ID,您也可以使用控件的ClientIDMode进行播放,将其设置为静态。
答案 2 :(得分:1)
你可以这样做:
function searchKeyPress(e) {
e = e || window.event;
var key = e.keyCode || e.which;
if (key == 13) {
document.getElementById("butSearch").click();
}
}
答案 3 :(得分:1)
在输入标记内尝试输入type =“submit”。