2016-10-14 5 views
0

Ich habe eine Autocomplete-Eingabe, die beim Laden der Seite, wenn der Benutzer einen Wert eingibt, die Liste der Vorschläge füllt. Während der Benutzer diese Eingabefokuspunkte jedoch noch hat und den Text löscht, aber dann etwas anderes eingibt, passiert nichts. Meine Theorie ist, dass es etwas damit zu tun hat, wo die Hauptmethode aufgerufen wird - beim Laden von Dokumenten. Ich habe versucht, die Funktion zu ändern, die die Länge dieser Eingabe beobachtete, aber immer noch das gleiche Problem hatte. Wie auch immer, hier ist der Code:JQuery Autocomplete Textbox Verhaltensprobleme

Haupt Aufruf:

$(document) 
.ready(function() { 
    $('#autocompleteCR') 
     .change(function() { 
      if ($('#autocompleteCR').val().length > 0) { 
       autoCompleteCheckRun(); 
      } 
     }); 
}); 

Funktion Körper:

function autoCompleteCheckRun() { 
$('#autocompleteCR') 
    .autocomplete({ 
     minLength: 2, 
     source: function (request, response) { 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: './PayInvoicesWS.asmx/GetCheckRun', 
       data: "{'description':'" + document.getElementById('autocompleteCR').value + "'}", 
       dataType: "json", 
       success: function (data) { 

        var el = data.d; 
        response($.map(el, 
         function (el) { 
          return { 
           label: "CheckRunID:" + " " + el.CheckRunID + " " + el.Description, 
           value: el.CheckRunID 
          } 
         })); 
        calculateTotal(); 
        doStep2(); 
       }, 
       error: function (result) { 
        alert("Error"); 
       } 
      }); 
     }, 
     select: function (event, ui) { 

      $("#CheckRunDescription").val(ui.item.label); 
      $("#autocompleteCR").val(ui.item.value); 
      $("#vendor_payment_type").prop("disabled", false); 

     } 


    }); 

};

Der Blick

<div class="divTableCell"> 
        <div class="ui-widget"> 
         <label for="autocompleteCR" id="checkRunLabel" style="font-size: 0.8em !important;">Check Run Lookup:</label> 
         <input type="text" id="autocompleteCR" /> 
        </div> 

       </div> 
+0

Haben Sie nach dem Löschen des Textes im Eingabefeld überprüft, ob ein JavaScript-Fehler in der Browserkonsole vorliegt? –

Antwort

1

Sie brauchen nicht die automatische Vervollständigung jedes Mal auf Änderungsereignis der Eingabe anzuwenden.

Überprüfen Sie, ob "$('#autocompleteCR').val().length > 0" im Änderungsereignis durch das minLength-Attribut der automatischen Vervollständigung erfüllt wurde.

Sie müssen nur Autocomplete auf Dokument bereit anwenden. Dies kann Ihr Problem lösen.

$(document).ready(function() { 
    $('#autocompleteCR').autocomplete({ 
     minLength: 2, 
     source: function (request, response) { 
      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: './PayInvoicesWS.asmx/GetCheckRun', 
       data: "{'description':'" + document.getElementById('autocompleteCR').value + "'}", 
       dataType: "json", 
       success: function (data) { 
         var el = data.d; 
         response($.map(el, 
         function (el) { 
         return { 
          label: "CheckRunID:" + " " + el.CheckRunID + " " + el.Description, 
          value: el.CheckRunID 
         } 
        })); 
        calculateTotal(); 
        doStep2(); 
       }, 
       error: function (result) { 
        alert("Error"); 
       } 
      }); 
     }, 
     select: function (event, ui) { 
      $("#CheckRunDescription").val(ui.item.label); 
      $("#autocompleteCR").val(ui.item.value); 
      $("#vendor_payment_type").prop("disabled", false); 
     } 
    }); 
}); 
+0

Sie hatten Recht. Sobald ich das entfernt habe, hat es sich wie erwartet verhalten. Vielen Dank! – Crumblenautjs