2013-04-22 2 views
0

У меня есть несколько полей ввода на странице, все с классом автозаполнения, под каждым из них у меня есть div, к которому я хочу добавить результаты автозаполнения. Однако, если я просто скажу, чтобы добавить к div класса, то он просто делает первый div, а не ближайший. Я попытался собрать некоторые javascript, чтобы исправить это, но я столкнулся с кирпичной стеной и продолжаю получать ту же ошибку. Любая помощь, которая может быть предоставлена, оценена.Добавление к ближайшему div класса с использованием jQuery autocomplete

Вот мой JavaScript:

<script type="text/javascript"> 
$(document).ready(function() { 
    var div_id; 
    $("input.autocomplete").autocomplete({ 
     set: div_id = $(".autocomplete").keyup(function() { 
      $('.autocomplete').closest('div').find('.container').attr('id'); 
     }), 
     appendTo: div_id, 
     source: function (request, response) { 
      $.ajax({ 
       url: '/Home/GetUsers', 
       type: "POST", 
       dataType: "json", 
       data: { query: request.term }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { label: item, value: item }; 
        })); 
       } 
      }); 
     } 
    }); 
})  
</script> 

Вот что вид выглядит следующим образом:

Employee Name (Team Leader): <input type ="text" name="empName1" class="autocomplete"/> 
    <div class ="container" id = "container0"></div> 
    <br/> 
    <br/> 
    Employee Name (Event Process Owner): <input type ="text" name="empName2" class="autocomplete"/> 
    <div class ="container" id = "container1"></div> 
    <br/> 
    <br/> 
    Employee Name (Sponsor): <input type ="text" name="sponsor" class="autocomplete"/> 
    <div class ="container" id = "container2"></div> 
    <br/> 
    <br/> 
    Employee Name: <input type ="text" name="empName3" class="autocomplete"/> 
    <div class ="container" id = "container3"></div> 
    <br/> 
    Employee Name: <input type ="text" name="empName4" class="autocomplete"/> 
    <div class ="container" id = "container4"></div> 
    <br/> 

И Я получаю ошибку, когда я пытаюсь запустить проект является «Microsoft JScript ошибка времени выполнения: Неожиданный вызов метода или доступа к свойствам. " Когда я получаю эту ошибку он подчеркивает это в моих jquery.min.js (1.8.3):

this.appendChild(e) 

ответ

0

Изменение этой линии

$('.autocomplete').closest('div').find('.container').attr('id'); 

Для

$('.autocomplete').next("div").attr("id")); 

Должно быть хорошо.

+0

Когда я пытаюсь что я получаю ошибка «Ошибка выполнения Microsoft JScript: невозможно получить значение свойства« element »: объект имеет значение null или undefined« at »if (this.menu.element.is («: visible »))» в jquery-ui-1.8 .20.js –

0

Попробуйте это:

HTML

data container id Добавить в input box

Employee Name (Sponsor): 
<input type ="text" name="sponsor" data-container_id="container2" class="autocomplete" /> 
<div class ="container" id = "container2"></div> 

Сейчас в Script

$("input.autocomplete").autocomplete({ 
    appendTo: $('#'+$(this).data('container_id')),//it will give you container-id 
    .... 
    .... 
+0

Спасибо, что ответили. Когда я пытаюсь, я получаю сообщение об ошибке «Ошибка выполнения Microsoft JScript: неожиданный вызов метода или доступа к свойствам». в том же месте в jquery.min.js –

+0

Я просто попробовал ваше третье предложение, и я получаю сообщение об ошибке «Ошибка выполнения Microsoft JScript: невозможно получить значение свойства« element »: объект имеет значение null или undefined« at »var ul = this.menu.element \t \t \t .empty() \t \t \t .zIndex (this.element.zIndex() + 1);» in jquery-ui-1.8.20.js –

+0

@Danger_Fox Попробуйте приведенный выше код. Я изменил способ его использования. –

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