2012-09-04 8 views
0

J'ai une zone de texte et une DropDownList. Le DropDownList est rempli en fonction de l'entrée dans la zone de texte. Il y a quelques problèmes que j'ai où le DropDownList n'est pas rempli correctement.jQuery .live fonctionne seulement parfois

Un est quand je tape quelque chose dans la zone de texte que je peux tabuler à DropDownList et l'ai rempli correctement. Mais si je décide que je veux changer ce qui est dans la zone de texte et y taper quelque chose d'autre, puis essayez de tabuler à la DropDownList à nouveau, il ne met pas à jour. Un autre problème est lorsque je commence à taper dans la zone de texte, j'ai une liste de saisie semi-automatique qui apparaît et je peux cliquer sur une option pour qu'elle remplisse la zone de texte pour moi, mais quand je le fais, la DropDownList n'est pas remplie.

Ceci est le javascript que je dois remplir DropDownList.

$('#textFrame').live('change', function (event) { 
    $.ajax({ 
     type: 'POST', 
     url: '@Url.Action("GetDirectors", "HostScan")', 
     data: { frame: $(this).val() }, 
     success: function (data) { 
      var markup = ''; 
      for (var x = 0; x < data.length; x++) { 
       markup += '<option value="' + data[x].Value + '">' + data[x].Text + '</option>'; 
      } 
      $('#DirectorList').html(markup).show(); 
     } 
    }); 

});

Que devrais-je changer pour que cela fonctionne?

Merci d'avance pour votre aide!

+0

Yo, '.live' est dépréciée: http://api.jquery.com/live/ lire aussi si vous souhaite un ancien poste':) 'http://stackoverflow.com/questions/ 11115864/quoi-mal-avec-la-jquery-live-method/11115926 # 11115926 espérons que cela aide. essayez d'utiliser l'événement '.on' s'il vous plaît –

+0

J'ai essayé d'utiliser .on, mais je n'arrive pas à le faire fonctionner du tout. Pas même au niveau que j'ai. – user1543269

+0

Je suppose que vous devez mettre à jour votre Jquery à ceci: ' 'then.on' api sera reconnu! ':)' –

Répondre

0

La première chose est que .live est obsolète à partir de jQuery 1.7.0. Essayez d'utiliser .on à la place. Deuxièmement, utilisez le fichier jQuery hébergé par google cdn .. Il aidera à réduire la bande passante de votre site. En ce qui concerne le code, essayez d'effacer les options avant d'ajouter de nouvelles valeurs. Cela garantit que vous n'ajoutez pas de nouvelles options aux options précédentes.

$(function(){ 

    $('#textFrame').on('change', function() { 
     $.ajax({ 
      type: 'POST', 
      url: '@Url.Action("GetDirectors", "HostScan")', 
      data: { frame: $(this).val() }, 
      success: function (data) { 
       if(data != null){ 
       var markup = ''; 
       $('#DirectorList').find('option').remove(); 
        for (var x = 0; x < data.length; x++) { 
         markup += '<option value="' + data[x].Value + '">' + data[x].Text + '</option>'; 
        } 
       $('#DirectorList').append(markup).show(); 
       } 
      } 
     }); 
    }); 
}); 
+0

Avec votre solution, DropDownList n'était pas renseigné du tout. Et j'ai lu que .live est mauvais à utiliser, mais je l'ai essayé au lieu du .on avec votre solution et il a résolu mon premier problème. Donc merci pour ça. Mais je suis toujours incapable d'obtenir la sortie appropriée dans DropDownList si je clique sur une option pour compléter automatiquement la zone de texte. Avez-vous une idée de la raison pour laquelle cela pourrait se produire? Je n'ai pas basculé vers le script jQuery que vous avez suggéré, donc cela pourrait être le problème. Je peux essayer ça. – user1543269

+0

Ok, donc mis à jour pour le jQuery que vous avez suggéré et le .on fonctionne maintenant, mais j'ai toujours le même problème de ne pas pouvoir choisir une valeur de la liste de saisie semi-automatique pour la zone de texte et avoir DropDownList. – user1543269

+0

Même j'ai eu le même problème lorsque j'utilisais la saisie semi-automatique jQuery. Lorsque vous sélectionnez une option de la saisie semi-automatique, pour une raison quelconque, il ne considère pas comme un événement de changement .. Donc, je devais également écrire le code pour l'événement de flou .. Il y a un autre problème avec cette approche. Cet événement se déclenchera deux fois, une fois lorsque vous sélectionnez une option à partir de la saisie semi-automatique, et à nouveau lorsque la liste déroulante perd son focus. Vous devez donc choisir votre événement avec soin pour faire les choses. –