Javascript 更改窗体选择类(当除一个选项外选择任何选项时)

Javascript 更改窗体选择类(当除一个选项外选择任何选项时),javascript,jquery,Javascript,Jquery,因此,我有一个工作特性,当用户在我的选择输入上选择任何选项时,将更改selects类 这很好,但是我想要的是,如果用户再次选择第一个选项,那么类就会被更改回来 第一个选项设置为占位符,我不能给它一个值,因为我只希望在选择任何其他选项时发布信息 我也不能将输入设置为禁用,因为我希望用户能够在之后重新选择,以防他们不想发布该数据 这是一个很长的检查列表,我将数据作为数组发布 以下是我目前拥有的一个JSFIDLE: http://jsfiddle.net/SD7cd/1/ 代码: 我会对值使用.se

因此,我有一个工作特性,当用户在我的选择输入上选择任何选项时,将更改selects类

这很好,但是我想要的是,如果用户再次选择第一个选项,那么类就会被更改回来

第一个选项设置为占位符,我不能给它一个值,因为我只希望在选择任何其他选项时发布信息

我也不能将输入设置为禁用,因为我希望用户能够在之后重新选择,以防他们不想发布该数据

这是一个很长的检查列表,我将数据作为数组发布

以下是我目前拥有的一个JSFIDLE:

http://jsfiddle.net/SD7cd/1/
代码:


我会对值使用.selectedIndex属性,如下所示:

document.getElementById("sel1").onchange = function () {
    this.className = (this.selectedIndex != 0) ? "selectoption-okay":"selectoption";
};

使用
if(this.value!=null&&this.value!=undefined)
时的一个问题是,第一个选项将有一个值,即使您没有显式分配它。如果没有明确给出值,option元素的值将默认为其内容,不,它将永远不会为null或未定义

Per:

此属性的文本内容表示标签 选择权。如果未定义,则其默认值为文本 元素的内容


您能试试这个吗?当您选择选项
选择一个选项…
时,如果您没有分配
值=''
,那么
选择一个选项…
将作为一个值

如此补充

<option selected="selected" value="">Select an option...</option>
                           ^^^^^^^^

演示:

完美!非常感谢!我需要研究这个方法,而不是使用if语句
document.getElementById("sel1").onchange = function () {
    this.className = (this.selectedIndex != 0) ? "selectoption-okay":"selectoption";
};
<option selected="selected" value="">Select an option...</option>
                           ^^^^^^^^
 <select id="sel1" class="selectoption" name="desc[]">
    <option selected="selected" value="">Select an option...</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
 </select>
document.getElementById("sel1").onchange = function() {
   this.className = "selectoption";    
   if(this.value != '' )
   {
    this.className = "selectoption-okay";
   }
 };