Нажмите на кнопку ссылки 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();
}
}
});