2017-01-13 9 views
0

JQuery UIオートコンプリート機能を使用して結果を表示しています。すべてのケースで正しく動作しているように見えますが、テキストボックスに値を貼り付けるのは初めてです。それは結果を取得しますが、までは、を押す必要があります。 1つは私がキーを押すと、それは結果とオートコンプリートUIを示しています。次に検索する単語を貼り付けると、それは完璧に機能し、オートコンプリートの結果が表示されます。私が使用しているコードは以下の通りです。JQuery UIオートコンプリートで最初に結果が自動的に表示されない

$("input.autocompleteData").on('input', function (e) { 
     e.stopImmediatePropagation(); 
     var txtVal = $(this).val().toLowerCase(); 
     var pastedValue = true; 
     getAutoCompletedata($(this), txtVal, pastedValue); 
    }); 

function getAutoCompletedata(cntl, input, pastedValue) { 

     var self = this; 
     if (input.length < 2) { 
      // Clear the array 
      self.hqListData = []; 
     } 
     else if (input.length == 2 || pastedValue) { 

      getHQListData(input); 
     } 
     // first clear array 
     self.hqFilterListData = []; 
     // fill data 
     // for text length greater than minLengthForSearch filter data from array 
     $.each(self.hqListData, function (i, val) { 

      if (val != undefined && val != null && val.name.toLowerCase().indexOf(input) >= 0) { 

       //push data into payerFilterList 
       self.hqFilterListData.push({ label: val.name, value: val.id }); 
      } 
     }); 




     $(cntl).autocomplete({ 
      source: self.hqFilterListData, scroll: true, select: function (e, ui) { 
       var uniqueId = new Date().getTime(); 
       var alreadyAdded = false; 

       $("div#resultsection input[type='hidden']").each(function (i) { 
        if (unescape(this.value).trim() === unescape(ui.item.value).trim()) { 
         alreadyAdded = true; 
         return false; 
        } 
       }); 
       if (!alreadyAdded) { 
        $("#resultsection").empty(); 
        $("#resultsection").append("<span id='" + uniqueId + "' class='multiselectContainer'><span class='indivSelectedText'>" + ui.item.label + "</span><input class='indivSelectedValue' type='hidden' value=" + escape(ui.item.value) + " ></input> <a href='#' class='fa fa-times-circle labelclose'></a></span>"); 
       } 
       $(cntl).val(''); 
       return false; 
      }, 
      focus: function (event, ui) { 
       $(this).val(ui.item.label); 
       return false; 
      } 
     }); 



    } 

function getHQListData(input) { 
     var self = this; 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: "ReviewPools.aspx/GetHQList", 
      data: JSON.stringify({ 'searchText': input }), 
      dataType: "json", 
      async: false, 
      success: function (output) { 
       var retVal = JSON.parse(output.d); // output.d 
       if (retVal.length === 0) { 
        alert("No Headquarter Found"); 
        return false; 
       } 
       self.hqListData = []; 
       $.each(retVal, function (i, val) { 
        self.hqListData.push({ "id": val.BUSINESS_RID, "name": val.COMPANY_NAME }); 
       }); 
      }, 
      error: function (errormsg) { 
       alert(errormsg.responseText); 
       state = 0; 
      } 
     }); 
    } 

初めて値を貼り付けても問題ありません。結果は表示されますが、ダウンキーを押した場合にのみ表示されます。 JqueryUIの問題ですか?私は何が欠けていますか?

答えて

-1

この

<input type="text" onpaste="myFunction()" value="Paste something in here"> 
をお試しください
関連する問題