2013-04-26 77 views
0

我已完成使用JQuery自动完成的自动完成功能。我的要求如下:为新添加的元素添加自动完成

新增自动完成自动为新添加的元素,这些元素都有一个共同的类:speClass

1.I想读取输入框的值,我不知道怎么读?

2.如何为新添加的元素添加自动完成功能。它仅适用于第一个输入(默认显示)

标题:

<script type="text/javascript" src="js/jquery-ui.js"></script> 
<script type="text/javascript" src="js/jquery-1.9.1.js"></script> 

HTML:

<tbody id="items"> 
    <tr> 
    <td><input type="text" class="speClass" name="specifications"/></td> 
    </tr> 
</tbody> 

JS

function addItem() { 
    var item = "<tr><td><input type='text' class='speClass' name='specifications' /> </tr>" ; 
    $("#items").append(item); 
} 

$(document).ready(function(){ 
    var cache_com = {}; 
    $(".specClass").autocomplete({ 
    source: function(request, response) { 
     var term = $(".speClass").val(); 
     if(term in cache_com) { 
      alert(term); 
      response($.map(cache_com[term], function(item) { 
       return { 
        label: item, 
        value: item 
       } 

      })); 
      return ; 
     } 

     $.ajax({ 
      type:"POST", 
      url: "loadSpecList.action", 
      data:{ 
       specQuery: term 
      }, 
      success: function(data) { 
       alert(term); 
       cache_com[term] = data; 
       response($.map(data, function(item) { 
        return { 
         label: item, 
         value: item 
        } 
       })); 
      }, 
      dataType: "json" 
     }); 
    }, 
    minLength: 1, 
    select: function(event, ui) { 

    } 
    }); 
}); 

PS:我在代码中修正变量错误

回答

0

更换

$(".specifications").autocomplete({

通过

$(".specClass").autocomplete({ 
+0

我写错了。但它仍然有这些问题 – xandy 2013-04-26 13:49:53

0

因为它是一个小部件,您东东调用控件初始化为每个新的元件

function addItem() { 
    var item = "<tr><td><input type='text' class='speClass' name='specifications' /> </tr>" ; 
    var speClass = $(item).appendTo($("#items")).find('.speClass'); 
    createAutocomplete(speClass) 
} 

var cache_com = {}; 
function createAutocomplete(els){ 
    els.autocomplete({ 
     source: function(request, response) { 
      var term = request.term; 
      if(term in cache_com) { 
       alert(term); 
       response($.map(cache_com[term], function(item) { 
        return { 
         label: item, 
         value: item 
        } 

       })); 
       return ; 
      } 

      $.ajax({ 
       type:"POST", 
       url: "loadSpecList.action", 
       data:{ 
        specQuery: term 
       }, 
       success: function(data) { 
        alert(term); 
        cache_com[term] = data; 
        response($.map(data, function(item) { 
         return { 
          label: item, 
          value: item 
         } 
        })); 
       }, 
       dataType: "json" 
      }); 
     }, 
     minLength: 1, 
     select: function(event, ui) { 

     } 
    }); 
} 

$(document).ready(function(){ 
    createAutocomplete($(".specifications")) 
}); 

您可以阅读t他在源文件中使用request.term输入文本

+0

非常感谢。 – xandy 2013-04-26 14:02:29

+0

我不能标记你的回答有用,因为我没有15的声望。这是我的第一篇文章。 – xandy 2013-04-26 14:24:28