Meilleure façon de créer une dynamique Select (liste Déroulante) liste?
J'utilise jQuery et jqGrid.
Je suis en train de remplir une liste de sélection de manière dynamique, un pour chaque ligne et j'ai besoin d'ajouter un événement click pour elle. Lorsque la liste de sélection est remplie, je prends l'index de l'élément que je veux sélectionnée, puis une fois tous les éléments sont à ajouter que je suis en train de régler l'élément sélectionné.
J'ai essayé
$("#taskList")[0].selectedIndex = taskIndex;
$("#taskList").selectOptions(taskIndex, true);
$("#taskList").val(1); //Tried to see if I could select any index and no luck.
$("#taskList option[value=" + taskIndex + "]").attr("selected", true);
Donc cela signifie que je suis probablement le remplissage de la liste de manière incorrecte...
var taskList = document.createElement("select");
var taskIndex = 0;
for (var i = 0; i < result.TaskTypes.length; i++) {
$(taskList).addOption(result.TaskTypes[i].TaskId, result.TaskTypes[i].TaskName);
if (result.TaskTypes[i].TaskName == rowData.TaskType)
taskIndex = i;
}
Est-il un meilleur moyen?
J'ai essayé ceci, mais je ne pouvais pas ajouter de l'événement click pour elle. Le bon point a été choisi à l'issue d'.
var taskList = "<select name='taskList' Enabled='true'>";
for (var i = 0; i < result.TaskTypes.length; i++) {
if (result.TaskTypes[i].TaskName == rowData.TaskType)
taskList += "<option selected> " + result.TaskTypes[i].TaskName + "</option>";
else
taskList += "<option>" + result.TaskTypes[i].TaskName + "</option>";
}
taskList += "</select>";
OriginalL'auteur Brad8118 | 2009-02-27
Vous devez vous connecter pour publier un commentaire.
La façon dont je l'aurais fait, est dans votre premier exemple: au lieu d'utiliser l'API jQuery pour addOption, utilisez l'API DOM, comme ceci:
Puis, après la boucle, vous pouvez utiliser:
pour avoir la liste de sélection placé à votre sélection par défaut.
Je n'ai pas utilisé jQuery beaucoup, mais je pense que c'est une bonne idée de ne pas négliger l'API DOM - son souvent pas aussi pratique que les raccourcis que jQuery et autres bibliothèques, mais ces étendre DOM capacités et ne pas venir à la place de la cathédrale.
Je reçois un échec avec la méthode add() ainsi, ne sais pas pourquoi - son d'une API documentée. De toute façon, le DOM de la méthode appendChild() fonctionne très bien pour moi.
eh. Vous voudrez probablement utiliser taskList.ajouter(en option), null) ajouter une option au bas de la liste. Appelant avec un seul paramètre ne fonctionne pas en effet (j'étais sous l'hypothèse que le dernier paramètre est facultatif et la valeur par défaut est null).
De bonnes nouvelles que de mauvaises nouvelles.... Bonne appendChild() fonctionne. Mauvais - ne peut Toujours pas régler ce point que je veux sélectionnés. --> awesome 🙁
J'ai juste édité ma réponse, et je pense que vous trouverez tous les détails dont vous avez besoin là-bas 🙂
OriginalL'auteur Guss
Vous pouvez définir l'index sélectionné comme ceci:
Ah, vous n'avez pas id="taskList" sur votre sélectionnez - c'est pourquoi il ne fonctionne pas
En effet, cela devrait probablement résoudre le problème si vous venez d'ajouter
id="taskList"
à l'élément select.Essayé var taskList = document.createElement("select"); $(liste des tâches).attr({ id: "taskList" }); pas de chance
Mettre l'id dans votre balisage. Si vous devez le faire via JavaScript, alors vous êtes à la recherche pour l'un de: $('<select id="taskList"/>') ou, si vous disposez déjà de l'élément: taskList.attr('id', 'taskList'). Consultez la documentation de 'attr' si vous êtes encore confus (c'est une bonne idée de toute façon, en fait :)).
OriginalL'auteur Greg
Relevant de la "meilleure façon" de la catégorie, JQuery vous permet d'utiliser une chaque boucle plutôt que sur la création de boucles manuellement.
OriginalL'auteur Jeremy L
Eu - un solide bon 8 heures plus tard.
Je suis en utilisant jQuery Validateur du pour vérifier la valeur dans le $("#hoursBx") (une zone de texte dans la ligne en cours).
L'ajout de la onClick œuvres.
var htmlArray = []; htmlArray.push("<option selected>",text,"</option>"); var html = htmlArray.join("");
OriginalL'auteur Brad8118