2014-02-07 3 views
0

Я думал, что не буду нажимать на мою кнопку по умолчанию (которая находится на моей главной странице asp.net), проверяя, был ли нажат ввод и его обработка. В основном, когда пользователи были на каких-либо типах полей ввода, и они нажимают кнопку ввода, он фактически выполнит событие моей кнопки по умолчанию в моей форме (как упоминалось, это кнопка на моей главной странице, которая разрешает глобальный поиск).Как справиться с нажатием кнопки по умолчанию?

Таким образом, пользователи были как эй постой я ударил клавишу ввода на поле ввода, почему я вдруг на странице результатов поиска .... Я не виню ...

Я думал, что не справиться с этим:

$(document).keypress(function (e) { 
     if (e.which == 13) { 
      return false; 
     } 
    }); 

Какая проблема больше не было, и я был счастлив ... пока я не узнал, все мои кнопки, например, мой диалог JQuery больше не выполняется, когда вы вкладками к ним и ударил введите ключ ... Ну, я вижу причину, потому что я возвращаю ложь. Но как я должен структурировать это, чтобы этого не произошло, если вы сосредоточены на кнопке asp.net?

ответ

1

Вы должны только на ручке текстовых

$('input[type=text]').keypress(function (e) { 
    if (e.which == 13) { 
     return false; 
    } 
}); 

EDIT

Согласно комментарию, Могу ли я добавить это в моей странице Site.Master но игнорировать один конкретный текстовый блок

Исключая текстовое поле

$('input[type=text]').not('.search').keypress(function (e) { 
    if (e.which == 13) { 
     return false; 
    } 
}); 

Здесь у меня есть demonstration, в последнем текстовом поле (поиск) событие не связано.

Использование Делегирование событий Подход

$(document).on('keypress', 'input[type=text]:not(.search)', function (e) { 
    if (e.which == 13) { 
     alert('Enter pressed') 
    } 
}); 

DEMO

+0

Но я чувствую, добавляя, что это все мои страницы разве путь идти. Могу ли я добавить это на мою страницу site.master, но игнорировать одно конкретное текстовое поле, а именно текстовое поле с controlid = search? Причина в том, что моя главная страница содержит это текстовое поле '# search' для выполнения глобальных поисков, поэтому я хочу исключить это текстовое поле, но не любое другое текстовое поле. – JonH

+0

@JonH, Да, это может быть достигнуто. Я бы предложил вам добавить dummy имя класса css, разрешив 'search' вместо использования идентификатора управления – Satpal

+0

@JonH, я обновил ответ, просто используйте этот код в основном файле. – Satpal

0

Вы должны связать даже точного элемента на странице:

$('.aspNetButton').on('keypress', (function (e) { 
    if (e.which == 13) { 
     return false; 
    } 
}); 
Смежные вопросы