2017-12-25 1 views
0

Ich habe viele Male typeahed verwendet, es funktioniert wie ein Zauber, aber jetzt brauche ich etwas anderes. Wenn Sie typeahead bereits verwendet haben, wissen Sie, dass Sie eine Klasse einer Eingabe über jquery auswählen müssen. Es wird den Inhalt dieser Eingabe erfassen und automatisch mit Hilfe von PHP nach dieser Zeichenfolge suchen. Mein Problem ist, dass ich verschiedene Suchen auf meiner Seite brauche, also füge ich neue Eingaben über jquery's append ein, was bereits funktioniert, aber da diese neuen Eingaben nicht mit dem DOM geladen wurden, kann ich sie einfach nicht auswählen. Ich habe ein paar Sachen gelesen ("ändern"), um das zu lösen, aber ich kann es nicht durcharbeiten.Wie kann ich mit typeahead suchen, wenn meine ausgewählte Klasse nicht im DOM geladen wurde, aber später angehängt wurde

Hier ist mein Code typeahead

$('input.typeaheadEmail').typeahead({ 
    minLength: 1, 
    source: function (query, process) { 
     return $.get('buscarNome', { query: query }, function (data) { 
      console.log(data); 
      data = $.parseJSON(data); 
      return process(data); 
     }); 
    } 
}); 

Und hier ist mein append Code

$("#adicionarExecutores").click (function() { 
    $('#divExecutores').append('<input type="email" class="executor typeaheadEmail form-control" style="padding-top: 5px !important;" name="podemVer[]" placeholder="[email protected]" autocomplete="off" value=""/>'); 
}); 

Jede Hilfe würde geschätzt. Vielen Dank!

Antwort

0

Ich habe es funktioniert. Sobald ich .typeaheadEmail nach dem Laden nicht aufrufen kann, habe ich .on ('keyup') verwendet und meinen Code um eine Funktion gewickelt. Es ist hacky, aber es funktioniert.

$('#divExecutores').on('keyup', '.typeaheadEmail', function() { 
     typeaheadEmail(); 
    }); 

    function typeaheadEmail() { 
     $('input.typeaheadEmail').typeahead({ 
         minLength: 3, 
         source: function (query, process) { 
           return $.get('buscarUsuario', { query: query }, function (data) { 
             console.log(data); 
             data = $.parseJSON(data); 
             return process(data); 
           }); 
         } 
     }); 

    } 
Verwandte Themen