2016-03-19 5 views
1

Ich habe eine Straße Eingabefeld mit JQuery u Autocomplete Vorschläge. Nachdem der Benutzer einen der Vorschläge ausgewählt hat, sollte er die Nummer eingeben. Dann auf Zahlunschärfe validiert eine Funktion mit unterhalb der Autocomplete-Suchfunktion, wenn die Straße in den Vorschlägen ist. Wenn ja, sollte eine andere Funktion aufgerufen werden. Ich kann die andere Funktion nicht aufrufen.JQuery ui Autocomplete-Trigger-Funktion nach programmatischer Suche

Hier ist mein Code:

$("#street").autocomplete({ 
    source: "street.php", 
minLength: 2,  
    search: function (event,ui) { 
      //Return to input field 
      if (ui.item==null) 
      { 
      alert("Please select a street.");   
      $("#street").focus(); 
      return; 
      } else{ 
       //call an outside function, 
       //does not work 
       address-search(); 
      }    
    } 
    }); 

Sie um Hilfe Vielen Dank im Voraus zur Lösung dieses Problems.

Antwort

1

Ich glaube, Sie die Suche Rückruf tun müssen, dass:

$("#street").on("autocompletesearch", function(event, ui) { 
    if (ui.item === null) { 
     alert("Please select a street.");   
     $("#street").focus(); 
    } else { 
     address-search(); 
    } 
}); 

Dokumentation hier: http://api.jqueryui.com/autocomplete/#event-change

Edit: Basierend auf Ihren spezifischen Code, ich glaube, Sie dies wünschen:

$(document).ready(function() { 
    var availableTags = [ 
    "1.Street", 
    "2.Street", 
    "3.Street" 
    ]; 
    $("#street") 
    .autocomplete({ 
     source: availableTags, 
     minLength: 2, 
    }) 
    .on("autocompletechange", function(event, ui) { 
     if (ui.item === null) { 
     alert("Please select a street."); 
     $("#street").focus(); 
     xhr.abort(); 
     } else { 
     address_search(); 
     } 
    }); 
    function address_search() { 
    alert($("#street").val()); 
    } 
}); 

Aktualisiert jsfiddle: https://jsfiddle.net/dupxj3mu/3/

+0

Hallo, die AutocompleteSearch überprüft nicht korrekt und löst falsche Ergebnisse aus. – user3260999

+0

Haben Sie den vollständigen Code oder einen Link zu einer jsfiddle, damit ich das Problem in Aktion sehen kann? – tymothytym

+0

Hallo, wenn in meinem Skript dieser Code funktioniert aber auch erst nach falscher Eingabe. https://jsfiddle.net/dupxj3mu/ Vielleicht, weil ich Jquery nicht aktivieren kann. Danke für Ihre Hilfe. – user3260999

0

t Hank du, ich habe eine Lösung für mein eigenes gefunden. https://jsfiddle.net/dupxj3mu/5/

function search_street() { 
    $("#street").on("autocompletechange", function(event, ui) { 
     if (ui.item === null) { 
     $("#hiddenstreet").val($("#street").val()); 
     $("#street").val(""); 
     return false; 
     } 
    }); 
    if ($("#street").val() === "") { 
     $("#street").val($("#hiddenstreet").val());  
     $("#street").focus(); 
     alert("Please select a street.");  
     $("#hiddenstreet").val(""); 
     return false; 
    } else { 
     address_search(); 
    } 
    } 

Aber der Autocomplete-Test nur einmal läuft dann wieder ADDRESS_SEARCH() wird durch falsche Straßennamen genannt werden, auch. Ich werde das Straßeneingabefeld bei falscher Eingabe leeren und in einem DIV beiseite legen, dass die Straßeneingabe falsch war. Dann wird address_search() nur bei der richtigen Auswahl ausgeführt.