6 votes

Comment puis-je vérifier si mon élément <select> contient l'attribut multiple ?

J'ai essayé de nombreuses options pour vérifier si l'attribut multiple est défini dans ma boîte de sélection, mais aucune n'a fonctionné. J'essaie de déterminer si la boîte de sélection actuelle à partir de laquelle je reçois des valeurs est une sélection multiple :

if($(":select[multiple]").length){
           alert("worked");
}

également

if($("select").attr("multiple"){
           alert("worked");
}

également

if($("select").attr("multiple") != 'undefined'{
           alert("worked");
}

html :

<select multiple="multiple" style="height:50px" class="classname" name="multi_values[]"> 
 <option value="blah">blah</option> 
 <option value="blah">blah</option> 
 <option value="blah">blah</option>              
</select>

8voto

mgraph Points 11213

Supprimer : au début de :

if($("select[multiple]").length){
    alert("worked");
}

Démonstration : http://jsfiddle.net/D5JX5/

2voto

Stano Points 2843

Il y a aussi une simple vérification du javascript :

var c = document.getElementsByTagName('select'); //collection
for (var i=0, l = c.length; i<l; i++) {
    alert(typeof c[i].attributes['multiple'] == 'undefined' ? 'single':'multiple');
}

Et l'équivalent jQuery :

$('select').each(function(){
  alert( typeof this.attributes['multiple'] == 'undefined' ? 'single':'multiple' );
});

1voto

Chandu Points 40028

Toutes les options sauf ":select[multiple]" (doit être "select[multiple]" ) que vous avez essayé devrait fonctionner.

JSFiddle : http://jsfiddle.net/VAXF6/2/

Cependant, il manque un paran de clôture à votre instruction if.

Modifiez votre code en :

if($("select[multiple]").length){
           alert("worked");
}

ou

if($("select").attr("multiple")){
           alert("worked");
}

ou

if($("select").attr("multiple") != 'undefined'){
           alert("worked");
}

Une autre alternative :

if($("select").is("[multiple]")){
           alert("worked");
}

1voto

Grinn Points 1966

Il semble que vous ne deviez donner l'alerte que si le multiple a été défini avec une valeur, et pas seulement s'il existe en tant qu'attribut :

if($("select[multiple='multiple']").length){
    alert("worked"); 
}

0voto

Hmerman6006 Points 596

Vous pouvez essayer d'utiliser l'un des indicateurs booléens suivants qui n'a pas été proposé :
let selects = document.getElementsByName('multi_values[]'); // returns collection
Méthode 1 : hasAttribute()

for (let i = 0; i < selects.length; i++) {
    const select = selects[i];
    if (select.hasAttribute('multiple')) {
        alert('Multiple select found');
        break;
    }
}

Méthode 2 : bang bang Élément.attributs

for (let i = 0; i < selects.length; i++) {
    const select = selects[i];
    if (!!select.attributes['multiple']) {
        alert('Multiple select found');
        break;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X