Автозаполнение JQuery: Подать заявку на выбор?
Использование автозаполнения JQuery в традиционной форме HTML.
Попытка представить форму (старомодный способ) при выборе.
Но поле ввода заполняется, а затем мне нужно нажать "вернуться" в 2-й раз или нажать кнопку "Отправить".
Я пробовал несколько примеров SO, но я не мог заставить их работать.
Как вы автоматически отправляете форму при выборе?
Ответы
Ответ 1
ОБНОВЛЕНИЕ: Я, наконец, понял это, код ниже должен сделать трюк. По какой-то причине обратный вызов change
не работал, но обратные вызовы close
и select
. Использование select
лучше, так как close
также будет вызываться, если поле теряет фокус.
$(function() {
$("#searchField").autocomplete({
source: "values.json",
select: function(event, ui) {
$("#searchForm").submit(); }
});
});
ДРУГОЕ ОБНОВЛЕНИЕ: Хорошо, также существует проблема с обратным вызовом select
, который по умолчанию (в приведенном выше коде), если вы пересекаете автозаполнение с помощью клавиатуры, и выберите с ключом ввода, вход изменяется до отправки формы. Однако, если вы выберете его с помощью мыши, форма будет представлена непосредственно перед изменением ввода, поэтому представленное значение - это то, что пользователь набрал (не то, что она выбрала из раскрывающегося списка автозаполнения). Работа, которая, похоже, работает:
$("#searchField").autocomplete({
source: "values.json",
minLength: 2,
select: function(event, ui) {
$("#searchField").val(ui.item.label);
$("#searchForm").submit(); }
});
Ответ 2
$( "#searchField" ).result(function(event, data, formatted) {
$(this).closest("form").submit();
});
ПоискField уже заполнен выбранным полем, поэтому нет необходимости делать это в этой функции снова.
Официальная документация: http://docs.jquery.com/Plugins/Autocomplete/result#handler
Ответ 3
Я не мог комментировать ответ @handsofaten, поэтому я добавлю к его ответу здесь. Возможно, имеет смысл использовать значение, а не label, так как в некоторых случаях, мой случай, метка не то, что пользователь хотел бы искать в базе данных.
$("#searchField").autocomplete({
source: "values.json",
minLength: 2,
select: function(event, ui) {
$("#searchField").val(ui.item.value);
$("#searchForm").submit(); }
});
Ответ 4
Вы отправляете выбранную заявку, вызывая идентификатор кнопки отправки в этом поле, даже если код находится на другой странице.
document.getElementById('submit').click();
Ответ 5
select: function( event, ui ) {
if(ui.item){
$(event.target).val(ui.item.value);
}
$(event.target.form).submit();
});