2010-12-10 4 views
1

Voir here si vous voulez voir ce que je fais.Utilisation de jQuery .live pour remplir une liste déroulante et sélectionner un élément

Je peux obtenir une liste dropdrop à charger à partir d'une source JSON, mais quand je sélectionne un élément, la liste se recharge à nouveau. Je sais quel est le problème, je ne connais pas la solution.

$("#RequestType").live("click", function() { 
    var items = "<option selected>(Select)</option>"; 
    $.each(jsonRequestType, function(i, item) { 
     items += "<option value='" + item.Id + "'>" + item.Title + "</option>"; 
    }); 
    $("#RequestType").html(items); 
}); 

Je sais que le problème est "clic", mais je ne sais pas ce que je devrais utiliser à la place.

Mise à jour nouveau problème lié Le seul problème que j'ai maintenant est lorsque la page d'édition se charge, je dois resélectionner mes données dans chaque liste déroulante. Comment puis-je charger la liste déroulante lorsque je charge la page?

code de travail problème jusqu'ici moins au-dessus

L'affichage

<td><%= Html.Hidden("RequestType", Model.DayRequested.RequestType, new { Class = "RequestTypeValue" })%> 
    <%= Html.DropDownList("RequestTypeDdl", new List<SelectListItem> { new SelectListItem { Text = "(Select)", Value = "" } }, new { Class = "RequestTypeDdl" })%></td> 

Et le script

// Get the request types for the drop down 
$(".RequestTypeDdl").live("focus", function() { 
    var items = "<option>(Select)</option>"; 
    var field = $(this); 
    $.each(jsonRequestType, function(i, item) { 
     items += "<option value='" + item.Id + "'"; 
      if ($(field).prev("input").val() == item.Id) 
       items += " selected"; 
      items += ">" + item.Title + "</option>"; 
     }; 
    }); 
    $(this).html(items); 
}); 

$(".RequestTypeDdl").live("change", function() { 
    $(this).prev("input").val($(this).val()); 
}); 
+0

um? quel est le résultat souhaité? – nickf

Répondre

0

Essayez 'focus' ou 'changement', peut-être.

+0

Focus l'a fait avec une combinaison de "changement" pour sauver la valeur. –

Questions connexes