2010-04-26 7 views

Répondre

3

En JavaScript plaine:

function in_array(needle, haystack, argStrict) 
{ 
    var key = '', strict = !!argStrict; 
    if (strict) 
    { 
     for (key in haystack) 
     { 
      if (haystack[key] === needle) 
       return true; 
     } 
    } 
    else 
    { 
     for (key in haystack) 
     { 
      if (haystack[key] == needle) 
       return true; 
     } 
    } 
    return false; 
} 

var values = new Array(1, 2, 4); 
var select = document.getElementById('selectName'); //Change to the id of the select 
if (select) 
{ 
    for (var i = 0; i < select.options.length; i++) 
    { 
     //Select options matching array values, unselect others 
     select.options[i].selected = in_array(select.options[i].value, values, false); 
    } 
} 

MISE À JOUR: Ajout de la fonction JavaScript in_array qui imitent celui PHP

+0

pour chaque valeur sur le tableau vous fera une boucle à travers la collection d'éléments dans la sélection? N'en faites-vous pas trop? –

+0

Oui c'est un peu exagéré, mais puisque de nombreux éléments dans le select peuvent avoir la même valeur ... C'est peu probable, mais c'est possible :) En tout cas avec cet extrait je suppose que vous avez l'idée comment le faire. – AlexV

+0

Je ne pense pas que le développeur devrait permettre un select avec la même valeur que les autres, ce serait la maintenabilité enfer. –

0

Je ne suis pas très familier avec Javascript, mais je pense qu'il est ceci:

var values = [1, 2, 4]; 
var sel = document.getElementsByTagName('SELECT')[0]; 
for (var i = 0; i < sel.options.length; i++) { 
    if(sel.options[i].value == 1 || sel.options[i].value == 2 || sel.options[i].value == 4) 
     sel.options[i].selected = 'selected'; 
} 
1

Depuis que je n'ai pas encore 50 points de rep rés, je ne peux pas commenter ou corriger le poste ci-dessus

Voici donc ma solution au tableau ci-dessus

var values = new Array(1, 2, 4); // using commas 
var values = [1, 2, 4]; // using array notation 
+0

- ah, il l'a fixé lui-même ... – mplungjan

+1

Cependant Harmen a tort. Vous ne pouvez pas sélectionner une option sur son index en utilisant sa valeur comme vous l'avez posté – mplungjan

6

jQuery a un utilitaire appelé $.inArray(value,array). Vous pouvez faire quelque chose comme ceci:

var array = [1,2,4]; 

$('#example option').each(function() { 
    var $th = $(this); 
    var value = parseInt($th.val()); 
    if($.inArray(value,array) >= 0) { 
     $th.attr('selected','selected'); 
    } 
}); 

$.inArray() retourne l'indice de la valeur si elle se trouve, ou -1 si elle n'est pas dans le tableau. C'est pourquoi vous devez tester pour >= 0.

Voir exemple ici-

http://jsfiddle.net/PJs37/

Questions connexes