2013-06-13 3 views
0

Я хочу, чтобы кнопка «поиска» была нажата, нажав кнопку ввода.попытка сделать кнопку «clickable»

это мой 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

Используйте '.onclick()' вместо '.click()'. – marekful

ответ

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

В ASP.NET, идентификаторы, генерируемые на стороне клиента не являются те, которые вы видите в 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 Идентификаторы, вы также можете играть с ClientIDMode вашего контроля, установив его статичным.

1

Вы можете сделать это так:

function searchKeyPress(e) { 
    e = e || window.event; 
    var key = e.keyCode || e.which; 
    if (key == 13) { 
     document.getElementById("butSearch").click(); 
    } 
} 
1

Попробуйте вместо этого типа = "отправить" внутри входного тега.

Смежные вопросы