如何检查我的<select>元素是否包含多个属性</select>

时间:2012-07-03 17:57:46

标签: javascript jquery

嗨我已经尝试了很多选项来检查我的选择框中是否设置了多个属性但没有一个有效。我正在尝试确定我获取值的当前选择框是否是多选的到目前为止这是我尝试过的:

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

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

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>

5 个答案:

答案 0 :(得分:8)

在以下位置删除:

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

演示http://jsfiddle.net/D5JX5/

答案 1 :(得分:2)

简单的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');
}

和jQuery等价:

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

答案 2 :(得分:1)

您尝试过的除":select[multiple]"(shd为"select[multiple]")之外的所有选项都应该有效。

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

但是你错过了if语句的结束语。

将您的代码更改为:

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

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

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

另一种选择:

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

答案 3 :(得分:1)

似乎您只需要警告多个是否设置了值,而不仅仅是作为属性存在:

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

答案 4 :(得分:0)

您可以尝试使用以下尚未提出的布尔指标之一:
let selects = document.getElementsByName('multi_values[]'); // returns collection
方法一:hasAttribute()

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

方法二:bang bang Element.attributes

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