2010-10-29 5 views
1

Hey les gens ... Je suis de retour avec une autre question ...jQuery Autocomplete ne fonctionne pas pour Dynamic Form Les champs

J'utilise jquery Autocomplete sur un champ de formulaire. Ça marche! Le problème est, puis dynamiquement, j'ajoute une autre ligne au formulaire, ce n'est pas le cas. Oui, je continue à basculer l'identifiant du nouveau champ à un nouveau.

Original = exampassed1 = Dynamiquement Ajouté exampassed2, exampassed3 et ainsi de suite ...

Je l'ai déjà ajouté leurs équivalents jQuery

$("#exampassed1").autocomplete({ 
    source: "exams.php", 
    minLength: 2 
}); 

$("#exampassed2").autocomplete({ 
    source: "exams.php", 
    minLength: 2 
}); 

et ainsi de suite ...

Je pense le problème est que jQuery ne reconnaît pas les éléments ajoutés dynamiquement, il lit seulement les éléments présents sur le chargement ...

Existe-t-il un moyen de pousser le gestionnaire de jquery à lire ces nouveaux éléments?

J'ai entendu des fonctions de Bind et en direct, mais je ne peux pas trouver un moyen de mettre en œuvre les ...

Toute petite/aide complète est très apprécié ici ... Cheers!

Le jQuery J'utilise

$().ready(function() { 
    $("#autonco").autocomplete({ 
     source: "nco.php", 
     minLength: 2 
    }); 

    $("#autonco1").autocomplete({ 
     source: "nco.php", 
     minLength: 2 
    }); 

    $("#autonco2").autocomplete({ 
     source: "nco.php", 
     minLength: 2 
    }); 

    $("#exampassed1").autocomplete({ 
     source: "exams.php", 
     minLength: 2 
    }); 

    $("#exampassed2").autocomplete({ 
     source: "exams.php", 
     minLength: 2 
    }); 

}); 

Le code qui est déjà là ...

<td align="center" valign="top">    
    <input type="text" id="exampassed1" name="exam[]" /> 
    </td> 

Le code qui est ajouté dynamiquement ...

<td valign="top" align="center">    
    <input id="exampassed2" name="exam[]" type="text"> 
    </td> 

Tous les pointeurs sont aussi apprécié!

Merci beaucoup encore!

+0

À partir de la dernière version de jQuery, j'utiliserais .on() à la place de .live() pour ajouter des éléments html dynamiquement. –

Répondre

3

Voici le code que j'ai utilisé. Résolu!

$().ready(function() { 

    $("#exampassed1").autocomplete({ 
     source: "exams.php", 
     minLength: 2 
    }); 

    $("#exampassed2").live('focus', function() { 

     $("#exampassed2").autocomplete({ 
     source: "exams.php", 
     minLength: 2 
     }); 

    }); 

}); 

Cheers!

+0

bizarre, mais après quelques heures de travail googling –

+0

Impressionnant! Merci pour ce foxybagga - fonctionne parfaitement :) – bryceadams

1

Ne pas appeler un autre $().autocomplete jusqu'à ce que vous obteniez un rappel du précédent. Si vous les avez cascadés comme ça, le moteur javascript les parcourra tous avant de recevoir un rappel du premier. Par conséquent, il ne peut pas trouver ce qu'il cherche.

+0

Bonjour Jason - merci pour le conseil - quoique - comment pourrais-je faire ça? – foxybagga

+0

Résolu. J'ai utilisé - http://api.jquery.com/live/ – foxybagga

Questions connexes