试图让输入按钮'可点击'

时间:2013-06-13 14:11:12

标签: javascript asp.net javascript-events

点击“输入”后,我想点击“搜索”按钮。

这是我的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'

也许就我为什么会遇到这个错误提出建议,是否有更好的替代方案?

4 个答案:

答案 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”。