Я пишу полугодовой плагин для форм с использованием jQuery, чтобы ускорить разработку проекта, над которым я работаю.
План состоит в том, что шаблон jTemplates содержит поля, мой плагин просматривает шаблон, чтобы найти все необходимые многоязычные ресурсы, запрашивает их с сервера, а затем упаковывает все в объект JavaScript затем он передается пользовательской функции в «submit».
Все работает хорошо, кроме стандартного кода "когда нажата клавиша ввода, отправьте форму", который вам нужно сделать, когда вы подделываете форму:
opts.coreElement.find('input[type=text]').keypress(function(evt) {
if ((evt.keyCode || evt.which) == 13) {
opts.coreElement.find('.saveButton').click();
}
});
Проблема заключается в том, что в Firefox (по крайней мере, я еще не проверял другие браузеры), если вы ввели информацию в текстовое поле с аналогичным именем, вы получаете историю форм. Если затем вы выберете одно из предложенных значений нажатием клавиши ввода, он отправит форму. Не здорово, если вы находитесь на первом входе на странице. На самом деле довольно раздражает, на самом деле.
Очевидно, что очевидным решением является вставка элемента формы вокруг полей и прекращение любой возможной отправки этой фиктивной формы через jQuery. К счастью, я могу позволить себе такую роскошь, поскольку я нахожусь в ASP.NET MVC, но что если бы я не был? Что, если мой плагин не знал, находится ли он уже внутри формы, и поэтому должен был быть сам по себе? Что если бы я был в стандартном WebForms ASP.NET и у меня было , чтобы вручную «нацелить» ключ возврата каждого ввода на правильную кнопку отправки?
Есть ли способ, возможно, через сам объект события, обнаружить контекст нажатия клавиши, чтобы я мог отфильтровать выбор элементов истории формы?