Используйте JQuery для вызова функции щелчка кнопки asp: link - PullRequest
0 голосов
/ 06 апреля 2009

Я играл с элементом управления поиском, и я заметил, что, когда вы пытаетесь нажать Enter в текстовом поле, он отправляет форму, но не нажимает кнопку поиска (как я этого хочу).

Моя разметка:

<div>
    <span>Search</span>
    <asp:TextBox ID="txtSearch" runat="server" Width="170"
        onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {$('#<%=lkbSearch.ClientID %>').click();return false;} else return true; ">
    </asp:TextBox>
</div>
<asp:LinkButton ID="lkbSearch" runat="server" CssClass="searchButton">
    <asp:Image ID="imgSearch" runat="server" ImageUrl="~/Images/Master/button_go.gif" />
</asp:LinkButton>

Я добавил событие onkeydown в текстовые поля, и оно запускается, но когда я пытаюсь использовать JQuery для вызова функции Click () с кнопки, оно ничего не делает.

Как я могу сделать так, чтобы при нажатии Enter в текстовом поле он "нажимал" на кнопку?

Ответы [ 3 ]

2 голосов
/ 05 сентября 2013

Поскольку LinkButton добавляется на страницу как <a>. Когда вы выбираете кнопку с помощью jQuery, вы получаете элемент, завернутый в jQuery. Из-за этого вызова событие click только запускает событие click, не следуя href.

Следующий код имитирует нажатие кнопки:

$('#<%= linkbuttonid.ClientID%>')[0].click();

Вы можете заменить '#<%= linkbuttonid.ClientID%>' любым селектором, который получит правильный элемент. Но необходимо включить [0], чтобы щелчок вызывался на самом <a>.

В качестве альтернативы, вы можете перенаправить страницу на href:

window.location = $('yourselector').attr('href');

См. этот вопрос для получения дополнительной информации о вызове события click для тега привязки в javascript.

1 голос
/ 06 апреля 2009

Это не связано с JQuery

Page.RegisterHiddenField( "__EVENTTARGET", lkbSearch.ClientID );

Я вижу, что вы в div, если у вас есть панель, есть атрибут DefaultButton.

Если вы действительно хотите использовать jQuery, вы можете использовать ClientScript.GetPostBackEventReference

Удачи: -)

0 голосов
/ 06 апреля 2009

Поработав с несколькими разными вещами, я наконец-то нашел решение.

Я обернул текстовое поле и кнопку в элемент управления панели asp: и установил для кнопки по умолчанию идентификатор моего LinkButton только для того, чтобы найти, что панели не могут иметь LinkButton в качестве DefaultButton.

Но изменение кнопки ссылки на ImageButton и использование ее идентификатора в поле DefaultButton на панели работает отлично.

<asp:Panel ID="pnlSearch" runat="server" DefaultButton="imbSearch">
...
</asp:Panel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...