如何检查我的<选择>元素是否包含 MULTIPLE 属性

how can I check to see if my <select> element contains the multiple attribute

本文关键字:选择 元素 是否 属性 MULTIPLE 包含 何检查 检查 我的      更新时间:2023-09-26

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

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>

删除 : 的开头:

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

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

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

您尝试的除":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");
}

似乎您只需要在使用值设置多个时才发出警报,而不仅仅是当它作为属性存在时:

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

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

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

方法2:砰元素属性

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