2011-08-24 112 views
0

我想将自动完成附加到动态生成的输入框。 我可以通过外部事件(如点击按钮)生成这些内容。 但是 在所需情况下,输入框正在上一个输入框的ONSELECT事件上生成,该输入框自动完成附加。Jquery自动完成循环

换句话说,最初我的页面上有一个输入框(带有自动完成)。当选择一个选项(ONSELECT)时,它会生成另一个输入框。问题 - 生成的输入框还应该附加自动完成,其ONSELECT事件应该生成另一个输入框,并且应该永远持续下去。

我主要需要这个背后的逻辑。我对语法没问题。只是不知道如何解决循环问题。

我已经阅读了这里需要做同样事情的其他问题,但在他们的情况下,这些元素是在外部生成的。非常感谢任何帮助。提前致谢。


编辑 - 我是新来的不知道如何发布代码formatted- @罗布---感谢。我喜欢你的想法。但是我没有明白你为什么最终使用了.val('')。那么,它仍然无法正常工作。我也尝试了其他类似的方法(如将克隆附加到父元素(div#in))。警报显示在选择。这意味着选择事件正在被解雇。下面的代码 -

$.post("returncategory.php", 
     {}, 
      function(data) 
      { 
       $('.cat').autocomplete({ 
        source: data, 
        type:'json', 
        minchar: 1, 
        fillin: false, 
        onSelect: function() { 
         //alert($(this).parent().get()); 
         //$(this).clone(true, true).appendTo($(this).parent()); 
         //$(this).clone(true, true).appendTo('#in'); 
         $(this).clone(true, true).insertAfter($(this)).val(); 
        } 
       }); 


      }, 
      "JSON"); 

编辑:纠正代码格式化

编辑:我找到了解决办法:)非常感谢您的输入抢! 这是我做的 -

$('.cat').live('click', function() { 

       $(this).autocomplete({ 
       url: "returncategory.php", 
       type: "json", 
       minchar: 1, 
       onSuggest: function() { 

       }, 
       onSelect: function() { 
        $('#clicker').click(); 
       } 
      }); 
      $(this).focus(); 
    }); 

$('#clicker').bind('click', function() { 
    var newItem = $("<br><br><input class='cat' type='text'name='td_products["+1+"]'/>"); 
    $('#in').append(newItem); 
    newItem.find('input').autocomplete({ 
       url: "returncategory.php", 
       type: "json", 
       minchar: 1, 
       onSuggest: function() { 

       }, 
       onSelect: function() { 
        $('#clicker').click(); 
       } 
      }); 

});

P.S.我很高兴。现在我也知道如何在这里发布格式化的代码。谢谢!

回答

0

我要说的选择,你应该抓住jQuery的参考电流输入,然后做$this.clone(true, true).insertAfter($this).val('')

http://api.jquery.com/clone/

+0

请看我在编辑答复。谢谢。 – MindHacker

+0

尝试调试$(this)。确保它指的是#cat输入,而不是别的。尝试'onSelect:function(){$(this).remove()}'看看输入是否消失。我不确定你使用的是哪一个自动完成插件,但我会推荐使用jQuery UI,它非常好 – Rob

+0

好吧,自动完成使用“this.ac”作为参考,所以下面的代码开始工作。生成的盒子正在执行自动完成。但是当从第二个框中进行选择时,第三个框已生成,但不支持自动完成。这里是代码----- $('。cat')。自动完成({url:“returncategory.php”, type:“json”, minchar:1, onSelect:function(){ $( this.ac).clone(true,true).insertAfter(this.ac); } }); – MindHacker