2010-02-16 2 views
0

J'ai le code suivant et ce que j'essaye de faire est de mettre en place une boîte de saisie de saisie semi-automatique qui, lorsqu'elle est remplie, crée une autre boîte de saisie de saisie semi-automatique en dessous.jquery autocomplete table d'entrée

  • Le problème avec mon code est que depuis que je suis en utilisant le flou, il va créer une nouvelle entrée chaque fois que je clique hors de le premier.

  • Le deuxième problème est que je dois installer la saisie semi-automatique sur la boîte d'entrée nouvellement créée, mais si je le fais récursive alors il va planter .

code:

function setupAutoComplete() 
{ 
var autoCompleteData = $("#listContacts").html().split("<br>"); 
//autoCompleteData = replaceAll(autoCompleteData, "&lt;", "<"); 
//autoCompleteData = replaceAll(autoCompleteData, "&gt;", ">"); 
$("[name|=toemail[]]").autocomplete(autoCompleteData); 
$("[name|=toemail[]]").result(function(event, item) { 
    $("[name|=toemail[]]").blur(); 
}); 
$("[name|=toemail[]]").blur(function(){ 
    var newString = $(this).val(); 
    newString = replaceAll(newString, "&lt;", "<"); 
    newString = replaceAll(newString, "&gt;", ">"); 
    $(this).val(newString); 
    var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>'; 
    $("#composeTo").append(newfield); 
}); 
} 

Répondre

0

Affichage de ma propre solution.

function setupAutoComplete() 
{ 
    var autoCompleteData = $("#listContacts").html().split("<br>"); 


$("[name|=toemail[]]").each(function(key, value) { 
    if (!($(this).hasClass("blurred"))) 
    { 
    $(this).autocomplete(autoCompleteData); 
    $(this).result(function(event, item) { 
     var newString = $(this).val(); 
     newString = replaceAll(newString, "&lt;", "<"); 
     newString = replaceAll(newString, "&gt;", ">"); 
     $(this).val(newString); 
     $(this).blur(); 
    }); 
    $(this).blur(function(){ 
     if (!($(this).hasClass("blurred"))) 
     { 
     var newfield = '<p><label class="" disabled="true"><select name="toSelect[]"><option>To: </option><option>CC: </option><option>BCC: </option></select></label><input type="text" value="" name="toemail[]" /></p>'; 
     $("#composeTo").append(newfield); 
     setupAutoComplete(); 
     $(this).addClass("blurred"); 
     } 
    }); 
    } 
}); 
1

Plutôt que de mettre en place l'auto complète sur les éléments en tant que groupe, vous devriez le faire individuellement que chacun est créé. Cela arrêtera la récursivité. Deuxièmement, pour éviter le déclenchement de l'événement en cours lorsque vous cliquez ailleurs sur l'écran, vous devez appuyer sur la touche de tabulation appuyée sur une touche.