2013-04-22 57 views
0

我在页面上有几个输入框,所有的都带有自动完成类,在它们的每一个下面我有一个div,我希望自动完成结果被附加到。然而,如果我只是说追加到一个类的div,那么它只是做第一个div而不是最接近的那个。我试图把一些javascript放在一起来解决这个问题,但是我碰到了一堵砖墙,并且一直在收到相同的错误。任何可以提供的帮助表示赞赏。使用jQuery自动完成追加到类的最近的div

这里是我的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运行时错误:无法获取属性的值'元素':对象为空或未定义”在“if(this.menu.element.is(”:visible“))”jquery-ui-1.8 .20.js – 2013-04-22 14:02:21

0

试试这个:

HTML

添加data container idinput box

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

现在脚本

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

感谢您的回复。当我尝试获取错误“Microsoft JScript运行时错误:意外调用方法或属性访问权限”。在jquery.min.js – 2013-04-22 13:56:22

+0

的同一个地方我刚刚尝试了你的第三个建议,我得到错误“Microsoft JScript运行时错误:无法获取属性的值'元素':对象为null或未定义”at“var ul = this.menu.element \t \t \t .empty() \t \t \t .zIndex(this.element.zIndex()+ 1);”在jquery-ui-1.8.20.js – 2013-04-22 14:06:57

+0

@Danger_Fox尝试上面的代码我改变了使用它的方式。 – 2013-04-23 05:55:15