jquery自动完成输入数组

jquery自动完成输入数组,jquery,autocomplete,Jquery,Autocomplete,我有下面的代码,我试图做的是设置一个自动完成输入框,当它被填写时,在它下面创建另一个自动完成输入框 我的代码的问题是 由于我使用模糊,它将创建 每次单击“关闭”时都会显示一个新输入 第一个 第二个问题是 我需要设置自动完成 在新创建的输入框上,但是 如果我递归地这样做,它就会 撞车 代码: 函数设置自动完成() { var autoCompleteData=$(“#listContacts”).html().split(“”); //autoCompleteData=replaceAll(a

我有下面的代码,我试图做的是设置一个自动完成输入框,当它被填写时,在它下面创建另一个自动完成输入框

  • 我的代码的问题是 由于我使用模糊,它将创建 每次单击“关闭”时都会显示一个新输入 第一个

  • 第二个问题是 我需要设置自动完成 在新创建的输入框上,但是 如果我递归地这样做,它就会 撞车

代码:

函数设置自动完成()
{
var autoCompleteData=$(“#listContacts”).html().split(“
”); //autoCompleteData=replaceAll(autoCompleteData,“,”); $(“[name |=toemail[]]”。自动完成(autoCompleteData); $(“[name |=toemail[]”)。结果(函数(事件,项){ $(“[name |=toemail[]]”。blur(); }); $(“[name |=toemail[]”)。blur(函数(){ var newString=$(this.val(); newString=replaceAll(newString,“,”); $(this.val)(新闻字符串); var newfield='To:CC:BCC:

'; $(“#composeTo”).append(newfield); }); }
不要将元素设置为一个组,而是在创建每个元素时单独进行。这将停止递归


其次,为了避免在屏幕上单击其他位置时触发onblur事件,您应该捕获按键时按下的tab键。

发布我自己的解决方案

function setupAutoComplete()
{
    var autoCompleteData = $("#listContacts").html().split("<br>");


$("[name|=toemail[]]").each(function(key, value) {
    if (!($(this).hasClass("blurred")))
    {
    $(this).autocomplete(autoCompleteData);
    $(this).result(function(event, item) {
        var newString = $(this).val();
        newString = replaceAll(newString, "&lt;", "<");
        newString = replaceAll(newString, "&gt;", ">"); 
        $(this).val(newString);
        $(this).blur();
    });
    $(this).blur(function(){
        if (!($(this).hasClass("blurred")))
        {
        var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>';
        $("#composeTo").append(newfield);
        setupAutoComplete();
        $(this).addClass("blurred");
        }
    });
    }
});
函数设置自动完成()
{
var autoCompleteData=$(“#listContacts”).html().split(“
”); $(“[name |=toemail[]”)。每个(函数(键、值){ if(!($(this).hasClass(“模糊”)) { $(this).autocomplete(autoCompleteData); $(此).result(函数(事件,项){ var newString=$(this.val(); newString=replaceAll(newString,“,”); $(this.val)(新闻字符串); $(this.blur(); }); $(this.blur(function()){ if(!($(this).hasClass(“模糊”)) { var newfield='To:CC:BCC:

'; $(“#composeTo”).append(newfield); setupAutoComplete(); $(此).addClass(“模糊”); } }); } });
function setupAutoComplete()
{
    var autoCompleteData = $("#listContacts").html().split("<br>");


$("[name|=toemail[]]").each(function(key, value) {
    if (!($(this).hasClass("blurred")))
    {
    $(this).autocomplete(autoCompleteData);
    $(this).result(function(event, item) {
        var newString = $(this).val();
        newString = replaceAll(newString, "&lt;", "<");
        newString = replaceAll(newString, "&gt;", ">"); 
        $(this).val(newString);
        $(this).blur();
    });
    $(this).blur(function(){
        if (!($(this).hasClass("blurred")))
        {
        var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>';
        $("#composeTo").append(newfield);
        setupAutoComplete();
        $(this).addClass("blurred");
        }
    });
    }
});