2010-05-10 4 views
1

J'ai un problème lors de l'ajout de plug-in auto-complétion à plusieurs entrées de texte en boucle (aucune erreur n'est renvoyée).Ajout de la saisie semi-automatique jquery sur plusieurs entrées de texte

// get text inputs to attach autocomplete  
var locinputs = $('#localizations').find('input:text'); 

// iterate over elements and add autocomplete plugin 
     for (var i = 0; i < locinputs.length; i++) { 
      // asp.mvc array with special characters replacing 
      var locNameField = locinputs[i].name.replace('[', '\\\\['); 
      locNameField = locNameField.replace(']', '\\\\]'); 
      locNameField = locNameField.replace('.', '\\\\.'); 

      $('input#' + locNameField).autocomplete('<%=Url.Action("GetCity", "Localization") %>', { 
       extraParams: { 
        provinceId: function() { return 21; } 
       }, 
       dataType: 'json', 
       parse: function (data) { 
        var rows = new Array(); 
        for (var i = 0; i < data.length; i++) { 
         rows[i] = { data: data[i], value: data[i].PlaceId, result: data[i].Name }; 
        } 
        return rows; 
       }, 
       formatItem: function (row, i, n) { 
        return row.Name; 
       }, 
       width: 300, 
       mustMatch: true, 
       multiple: true 
      }); 
     } 

Il n'y a pas d'erreur sur le chargement, j'ai essayé de débogage à l'aide Firebug, les éléments sont accessibles par le sélecteur jquery

<input type="text" name="loc[0].CityNames" id="loc[0].CityNames" value="" /> 
déclaration corrigée

$. ('Entrée Localisations #: text') chacun (function() {

  $(this).autocomplete('<%=Url.Action("GetCity", "Localization") %>', { 
       extraParams: { 
        provinceId: function() { return 21; } 
       }, 
       dataType: 'json', 
       parse: function (data) { 
        var rows = new Array(); 
        for (var i = 0; i < data.length; i++) { 
         rows[i] = { data: data[i], value: data[i].PlaceId, result: data[i].Name }; 
        } 
        return rows; 
       }, 
       formatItem: function (row, i, n) { 
        return row.Name; 
       }, 
       width: 300, 
       mustMatch: true, 
       multiple: true 
      }); 
     }); 

Répondre

1

Essayez d'utiliser jQuery chaque lieu d'utiliser la boucle.

$('#localizations input:text').each(function() { 
    // Your code goes here. 
}); 

Assurez-vous également que le sélecteur fonctionne correctement. Déboguez dans firebug et inspectez l'expression $ ('# localisations'). Find ('input: text') ou alertez simplement sa taille.

+0

J'ai déplacé le code à chaque instruction jquery et l'ID ne fonctionne pas. Mais quand j'essaie d'accéder à l'élément $ ("input # loc \\\ [0 \\\] \\. CityNames"); il est accessible (à partir de firebug). marcinn

+1

Essayez de placer l'alerte dans chaque: est-ce que c'est correct? nombre de fois? Encore une chose: dans chaque fonction "ceci" fera référence à l'élément DOM. Donc, pour manipuler avec l'élément courant essayez d'utiliser $ (this) .attr ("name") etc. – Juriy

+0

Juriy merci pour jquery et $ (this) :) – marcinn

Questions connexes