【问题标题】:how can I check to see if my <select> element contains the multiple attribute如何检查我的 <select> 元素是否包含多个属性
【发布时间】:2012-07-03 17:57:46
【问题描述】:

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

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>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

去掉开头的:

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

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

【讨论】:

  • 有效,但它适用于所有选择框,而不仅仅是其中具有多个属性的选择框
【解决方案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' );
});

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您似乎只需要在设置了多个值时才需要提醒,而不仅仅是作为属性存在:

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

      【讨论】:

        【解决方案5】:

        您可以尝试使用以下尚未建议的布尔指标之一:
        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 bangElement.attributes

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

        【讨论】:

          猜你喜欢
          • 2015-12-19
          • 2015-12-24
          • 1970-01-01
          • 1970-01-01
          • 2019-02-23
          • 1970-01-01
          • 2021-07-16
          • 2021-12-04
          • 2017-08-04
          相关资源
          最近更新 更多