2010-02-28 7 views
1

J'ai un champ de saisie semi-automatique jquery qui fonctionne bien suivi d'un champ de saisie de date. Chaque fois qu'un utilisateur sélectionne un élément de la liste de saisie semi-automatique, il sélectionne correctement l'élément et déclenche le résultat() mais crée également un "dommage collatéral" dans mon champ de date, insérant l'ID de l'élément de saisie semi-automatique sélectionné. C'est un cas, mais je l'ai aussi remarqué dans d'autres occasions, parfois si d'autres champs d'entrée sont devant le champ de saisie semi-automatique ou derrière, cela n'a pas vraiment d'importance. Aussi s'il y a 3 (n'importe quel nombre) d'autres champs tous les trois seraient insérés l'ID d'élément de saisie semi-automatique.jQuery autocomplete "dommages collatéraux" dans d'autres champs

C'est un comportement non désiré et je dois m'en débarrasser. Quelqu'un?

Voici le code:

 $("#Clients").focus().autocomplete('<%=Url.Action("GetClients", "Client") %>', { 
      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].ClientName, result: data[i].ClientName }; 
       } 
       return rows; 
      }, 
      formatItem: function(row, i, n) { 
       return row.ClientName; 
      }, 
      width: 300, 
      minChars: 0, 
      max: 0, 
      delay: 50, 
      cacheLength: 10, 
      selectFirst: true, 
      selectOnly: true, 
      mustMatch: true 
     }); 

     $("#Clients").result(function(event, data, formatted) { 
      if (data) { 
       $(this).parent().next().find("input").val(data["client_id"]); 
       if (data["ClientName"] && data["client_address1"] && data["client_postcode"] && data["client_postname"]) { 
        $("#ClientDetails").html(
        "<li class=\"clientNumber\">Client Id: " + data["client_ClientNumber"] + "</li>" + 
        "<li>" + data["ClientName"] + "</li>" + 
        "<li>" + data["client_address1"] + "</li>" + 
        "<li>" + data["client_postcode"] + data["client_postname"] + "</li>" 
        ); 
       } 
       else { 
        $("#ClientDetails").html(
        "<li class=\"clientNumber\">Client Id: " + data["client_ClientNumber"] + "</li>" + 
        "<li>" + data["ClientName"] + "</li>"); 
       } 
      } 
     }); 
+1

Code postal, ** toujours! ** votre balisage et vos appels jQuery lp –

+0

Pouvez-vous montrer du code? Nous pourrions être en mesure de repérer la cause du problème. Beaucoup d'yeux etc ... –

+0

J'ai joint le code .. – mare

Répondre

0

Pour moi, cette ligne

$(this).parent().next().find("input").val(data["client_id"]); 

semble un peu douteux.

  • Vous obtenez le parent du contrôle d'entrée avec l'ID « Clients »
  • Ensuite, vous passez à l'élément suivant
  • Trouver tous les contrôles d'entrée dans ce point
  • Définissez la valeur de tous trouvé les contrôles de saisie pour le client_id
+0

AAAA! Comment pourrais-je raté ça! Merci – mare