Ma liste de sélection s'appelle dropListBuilding
. Le code suivant ne semble pas fonctionner:
for (var i = 0; i < buildings.length; i++) {
var val = buildings[i];
var text = buildings[i];
alert("value of builing at: " + i.toString() + " is: " + val);
$("#dropListBuilding").addOption(val, text, false);
}
Cette ligne meurt:
$("#dropListBuilding").addOption(val, text, false);
Quel est le droit d'ajouter des éléments au menu déroulant dans jQuery? J'ai testé sans cette ligne et la variable buildings a mon élément de données.
Ne compliquez pas votre code. Cela peut être fait simplement comme ci-dessous en utilisant un itérateur de type foreach:
$.each(buildings, function (index, value) {
$('#dropListBuilding').append($('<option/>', {
value: value,
text : value
}));
});
$('#dropListBuilding').append('<option>'+val+'</option>');
Le faire de cette façon a toujours fonctionné pour moi, j'espère que cela aidera.
var ddl = $("#dropListBuilding");
for (k = 0; k < buildings.length; k++)
ddl.append("<option value='" + buildings[k]+ "'>" + buildings[k] + "</option>");
Votre code échoue car vous exécutez une méthode (addOption) sur l'objet jQuery (et cet objet ne prend pas en charge la méthode).
Vous pouvez utiliser la fonction Javascript standard comme ceci:
$("#dropListBuilding")[0].options.add( new Option("My Text","My Value") )
Cela fonctionne bien, essayez ceci.
var ob = $("#myListBox");
for (var i = 0; i < buildings.length; i++) {
var val = buildings[i];
var text = buildings[i];
ob.prepend("<option value="+ val +">" + text + "</option>");
}
Il semble que vous souhaitiez ce branchement car il suit votre code existant, peut-être que le fichier plug-in js a été laissé quelque part.
http://www.texotela.co.uk/code/jquery/select/
var myOptions = {
"Value 1" : "Text 1",
"Value 2" : "Text 2",
"Value 3" : "Text 3"
}
$("#myselect2").addOption(myOptions, false);
// use true if you want to select the added options » Run
Si vous ne souhaitez pas utiliser le plug-in de 3,5 ko pour jQuery ou si vous ne souhaitez pas construire la chaîne HTML lors de l'échappement de caractères HTML réservés, voici une méthode simple qui fonctionne:
function addOptionToSelectBox(selectBox, optionId, optionText, selectIt)
{
var option = document.createElement("option");
option.value = optionId;
option.text = optionText;
selectBox.options[selectBox.options.length] = option;
if (selectIt) {
option.selected = true;
}
}
var selectBox = $('#veryImportantSelectBox')[0];
addOptionToSelectBox(selectBox, "ID1", "Option 1", true);
Pour moi celui-ci a fonctionné
success: function(data){
alert("SUCCCESS");
$.each(data,function(index,itemData){
console.log(JSON.stringify(itemData));
$("#fromDay").append( new Option(itemData.lookupLabel,itemData.id) )
});
}