2010-07-29 2 views
3

Отказ от ответственности: Я рассмотрел связанные вопросы и не смог найти решение этой проблемы.jQuery UI Autocomplete - как я могу получить введенное пользователем значение

Сценарий заключается в следующем:

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

Thanks

ответ

2

Если быть честным, то я не уверен. Глядя на документацию поиск событие должно работать.

Редактировать Это действительно помогает читать документацию. : D

Метод поиска.

Триггеры поиска событие, которое, когда данные доступны, то будет отображаться предложения; может использоваться кнопкой выбора , чтобы открыть предложения при нажатии. Если значение аргумента не указано, используется значение ввода . Может называться с пустой строкой и minLength: 0 для отображения всех элементов.

$(".selector").autocomplete({ 
    search: function(event, ui) { 
    $.ajax{ 
     //Your ajax parameters... 

     success: function(data) { //No idea what format your data is in... 
     if(data['status'] == false) { //there is no result 
      //return your data. 
      //Trigger the events you want if the item does no exist. 
     } 
     else if(data['status'] == true){ 
      //return data normally. 
     } 
     } 

    } 
    } 
}); 
+0

У меня есть событие, связанное с изменением, и для тестирования я поставил там окно предупреждения. Кажется, что не имеет никакого эффекта :( – user114385

+0

Надеюсь, поиск будет работать для вас. В основном я просто помещаю оператор if в объект ajax. Возможно, вы можете сделать то же самое, если используете параметр $ .ajax в опции поиска. – Keyo

+0

Поиск работал как a charm - спасибо за вашу помощь. – user114385

2

Чтобы захватить вход, который в настоящее время во входном текстовом поле автозаполнения можно использовать метод select как в autocomplete remote example:

$("#birds").autocomplete({ 
     source: "search.php", 
     minLength: 2, 
     select: function(event, ui) { 
      log(ui.item ? ("Selected: " + ui.item.value + " aka " + ui.item.id) : "Nothing selected, input was " + this.value); 
     } 
    }); 

Если ui.item имеет значение, это означает, что что-то (и совпадающее значение там).

И если вы хотите, что пользователь набрал, используйте this.value.

+0

Мой выбор выглядит так: select: function (event, ui) { var normalText = ui.item? ui.item.label.replace (/ (<.+?>)/gi, ' '): $ (это) .value; вар myTargetUrl = "CreateNew/CreateNew newTitle =?" + normalText; $ (' # <%= id %> ') .val (normalText); $ .ajax ({ типа:' POST ', URL: myTargetUrl }); alert (myTargetUrl); return false; } Но диалог предупреждения никогда не приходит, когда я ввожу значение, которое не существует и нажмите В какой момент у меня есть доступ к введенному значению, я пытался найти событие, событие изменения и т.д., чтобы не дали никаких результатов – user114385

+0

Я не знаю, почему предупреждение не появляется.Возможно, вызов ajax бросает исключение. Но я сделал образец здесь, и он появляется http://jsbin.com/aqewu4/edit (даже когда вызов ajax указывает на ничего). Возможно, эта страница с образцами поможет вам решить эту проблему. Если нет, отредактируйте свой вопрос с более подробной информацией или создайте новый вопрос. –

Смежные вопросы