代码之家  ›  专栏  ›  技术社区  ›  Gazler

jquery自动完成输入数组

  •  0
  • Gazler  · 技术社区  · 15 年前

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

    • 我的代码的问题是 因为我使用了模糊,它将创建 每次单击时都会有新的输入 第一个。

    • 第二个问题是 我需要设置自动完成功能 在新创建的输入框上,但是 如果我递归地做,那么它将 撞车。

    代码:

    function setupAutoComplete()
    {
     var autoCompleteData = $("#listContacts").html().split("<br>");
     //autoCompleteData = replaceAll(autoCompleteData, "&lt;", "<");
     //autoCompleteData = replaceAll(autoCompleteData, "&gt;", ">");
     $("[name|=toemail[]]").autocomplete(autoCompleteData);
     $("[name|=toemail[]]").result(function(event, item) {
        $("[name|=toemail[]]").blur();
     });
     $("[name|=toemail[]]").blur(function(){
      var newString = $(this).val();
      newString = replaceAll(newString, "&lt;", "<");
      newString = replaceAll(newString, "&gt;", ">"); 
      $(this).val(newString);
      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);
     });
    }
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   mat-mcloughlin    15 年前

        2
  •  0
  •   Gazler    15 年前

    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");
            }
        });
        }
    });