javascript - 如何为动态创建的输入框应用自动完成

标签 javascript php jquery html autocomplete

我有 5 个输入框来添加产品,如果用户想要添加更多产品,他可以单击“添加更多产品”,然后会出现 5 个新的动态创建的文本框。我的问题是我无法自动完成我的动态输入框,但无法自动完成我的静态输入框。

我的 HTML 代码

<div class="pro" id="dynamicInput">
<div>Product Name 1
<input style="border:2px solid #7f9db9" name="product_1" id="in_pc_item_moq_unit_type1" class="ui-autocomplete-input" maxlength="100" placeholder="Enter your product name" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
<input type="hidden" id="in_pc_item_moq_1">
</div>
<div>Product Name 2

<input style="border:2px solid #7f9db9" name="product_2" id="in_pc_item_moq_unit_type2" class="ui-autocomplete-input" maxlength="100" placeholder="Enter your product name" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
</div>
<div>Product Name 3
<input style="border:2px solid #7f9db9" class="ui-autocomplete-input" id="in_pc_item_moq_unit_type3" maxlength="100" name="product_3" placeholder="Enter your product name" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
</div>
<div>Product Name 4

   <input style="border:2px solid #7f9db9" class="ui-autocomplete-input" id="in_pc_item_moq_unit_type4" maxlength="100" name="product_4" placeholder="Enter your product name" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
</div>
 <div>Product Name 5

   <input style="border:2px solid #7f9db9" class="ui-autocomplete-input" id="in_pc_item_moq_unit_type5" maxlength="100" name="product_5" placeholder="Enter your product name" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">
 </div>
            </div>
<div class="ta m15">
    <input name="gluserid" id="glid" value="7171786" type="hidden">     <input type="button" value="Add more product"  onclick="addInput('dynamicInput');">
     <input type="submit" value="submit"  name="submit">


        </div>

我的动态添加输入框的java脚本代码是

<script type="text/javascript">

        var counter = 1;
        var limit = 4;
        var num=6;
function addInput(divName){
     if (counter == limit)  {
          alert("You have reached the limit of adding " + counter + " inputs");
     }
     else {
         for(var i=1;i<=5;i++)
         {
          var newdiv = document.createElement('div');
          newdiv.innerHTML = "Product Name " + (num) + "<input style='border:2px solid #7f9db9'  class='ui-autocomplete-input' id='in_pc_item_moq_unit_type" + num + "' maxlength='100' type='text' name='product_" + num + "' placeholder='Enter your product name'>";
          document.getElementById(divName).appendChild(newdiv);
          num++
      }
    counter++;
     }
}

    </script>

我的自动建议脚本是

<script type="text/javascript">

    function auto_suggest(id)
    {
        if(typeof(Suggester)!="undefined")
        {
            sugg=new Suggester({"element":id,"onSelect":selecttext,"type":"mcat","placeholder":"Enter your product name","classPlaceholder":"ui-placeholder-input",minStringLengthToFetchSuggestion:1});
        }else
        {
            setTimeout(function(){
            auto_suggest()},50);
        }
    }
        auto_suggest('in_pc_item_moq_unit_type1');
        auto_suggest('in_pc_item_moq_unit_type2');
        auto_suggest('in_pc_item_moq_unit_type3');
        auto_suggest('in_pc_item_moq_unit_type4');
        auto_suggest('in_pc_item_moq_unit_type5');
        auto_suggest('in_pc_item_moq_unit_type6');
        auto_suggest('in_pc_item_moq_unit_type7');
        auto_suggest('in_pc_item_moq_unit_type8');
        auto_suggest('in_pc_item_moq_unit_type9');
        auto_suggest('in_pc_item_moq_unit_type10');
        auto_suggest('in_pc_item_moq_unit_type11');
        auto_suggest('in_pc_item_moq_unit_type12');
        auto_suggest('in_pc_item_moq_unit_type13');
        auto_suggest('in_pc_item_moq_unit_type14');
        auto_suggest('in_pc_item_moq_unit_type15');
        auto_suggest('in_pc_item_moq_unit_type16');
        auto_suggest('in_pc_item_moq_unit_type17');
        auto_suggest('in_pc_item_moq_unit_type18');
        auto_suggest('in_pc_item_moq_unit_type19');
        auto_suggest('in_pc_item_moq_unit_type20');



    function selecttext(event, ui)
    {
        this.value = ui.item.value;



    }

</script>

谁能告诉我我做错了什么,提前谢谢

最佳答案

试试这个:

for(var i=1;i<=5;i++)
{
   var newdiv = document.createElement('div');
   newdiv.innerHTML = "Product Name " + (num) + "<input style='border:2px solid #7f9db9'  class='ui-autocomplete-input' id='in_pc_item_moq_unit_type" + num + "' maxlength='100' type='text' name='product_" + num + "' placeholder='Enter your product name'>";
   document.getElementById(divName).appendChild(newdiv);
   num++;
   auto_suggest('in_pc_item_moq_unit_type' + num); // apply autocomplete after element creation
}

关于javascript - 如何为动态创建的输入框应用自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843138/

相关文章:

javascript - 在 v-for 循环中访问元素的数据 (Vue.js)

javascript - 如何使用服务器的 JSON 响应动态填充灰尘模板?

php - 如何将值从 jquery 发布到 php

php - 悬停时不会打开二级菜单 (IE10)

php - 在php自提交表单中显示加载消息

javascript - 使用 JS 展开/折叠 div 常见问题解答

javascript - 具有最小尺寸的动态页脚尺寸

php - 在 JavaScript 或 PHP 中转义撇号

jquery - 如何使用 jQuery 将类添加到加载的内容

javascript - Cordova 和 jquery 移动谷歌地图未加载