Нажмите на кнопку ссылки asp.net, нажмите на кнопку ввода и нажмите

У меня есть 2 текстовых поля asp, к которым я прикрепил jQuery, чтобы вызвать щелчок на стороне сервера с помощью кнопки ссылки, если нажать клавишу ввода в любом из 2 текстовых полей. Но, похоже, это не работает. Пожалуйста, помогите мне объяснить, где и что я делаю неправильно. Мне нужно решение, которое работает во всех основных браузерах [IE7,8,9], [Firefox 3,4], Safari[4,5].

Вот мой код,

<script language="javascript" type="text/javascript">
function GC_PostBack() {
    jQuery('#<%=lnkSubmitGiftCardNumber.ClientID%>').trigger("click");
}

и на стороне сервера pn Page_Load, я присоединяю эту функцию к событию onkeypress текстовых полей.

 if (!IsPostBack)
    {
        txtGiftCardNumber.Attributes.Add("onkeypress", "if(window.event.keyCode == 13) { GC_PostBack(); }");
        txtGiftCardPin.Attributes.Add("onkeypress", "if(window.event.keyCode == 13) { GC_PostBack(); }");
    }

Я пытался использовать.click(), а не.trigger("click"), но безрезультатно. Пожалуйста помоги!

Благодарю.

6 ответов

Элисон верна, и если вы хотите использовать jQuery, как у вас, просто сделайте:

<script language="javascript" type="text/javascript">
    function GC_PostBack() {
        jQuery('#<%=lnkSubmitGiftCardNumber.ClientID%>').click();
    }
</script>

РЕДАКТИРОВАТЬ:

Если вы используете jQuery, почему бы не использовать jQuery для всего этого? В настоящее время, что у вас есть, не будет работать кросс-браузер для события нажатия клавиши. Я предлагаю что-то вроде этого:

(function() {

    $('input[id$="txtGiftCardNumber"], input[id$="txtGiftCardPin"]')
        .keypress(function(e) {

            var keyCode;

            if (window.event) keyCode = window.event.keyCode;
            else if(e) keyCode = e.which;
            else return true;

            if (keyCode == 13) {

                $('[id$="lnkSubmitGiftCardNumber"]').click();
                return false;

            } else return true;

        });

});

Следующее будет работать для запуска обратной передачи:

document.getElementById('<%= lnkSubmitGiftCardNumber.ClientID %>').click();

Вы можете найти правильный ответ здесь: http://johanleino.wordpress.com/2010/05/05/using-jquery-to-trigger-click-event-on-linkbutton/

Проблема в том, что метод щелчка jQuery не вызывает href кнопки ссылки. Вы должны "оценить" содержимое атрибута "href".

<asp:LinkButton ID="LinkButton1" OnClick="LinkButton1_Click"runat="server">G</asp:LinkButton>

  $(document).keypress(function (e) {
        if (e.which == 13) {
            javascript: __doPostBack('LinkButton1', '')
        }
    });

Я понимаю, что это старый пост, но могут быть и другие люди, вроде меня, которые все еще ищут ответ. Я пробовал этот код, и он отлично работает для меня. Проверка на "Enter key" такая же, но __doPostBack() вместо click().

__doPostBack('<%=lnkSubmitGiftCardNumber.UniqueID%>', '');

Вы можете сделать все на стороне клиента с JQUERY. скажем, txtGiftCardNumber имеет txtGiftCardNumberID в качестве идентификатора, в этом случае вы можете связать keydown, который является лучшим событием, чем нажатие клавиши с IE

  $('input:text[id$=txtGiftCardNumberID ]').keydown(function (event) {
           if (event.keyCode == '13') {
            $('#'+<%= lnkSubmitGiftCardNumber.ClientID %>).click();
            }
        }
    });
Другие вопросы по тегам