是否有 Javascript offchange="" 函数,或通过使用 class 而不是值进行切换来复制它的方法?

Is there a Javascript offchange="" function, or a way to replicate it by toggling using a class instead of value?

这是我的 JS 小提琴:http://jsfiddle.net/2tjgebgq/1/

或者代码如下:

<input type="text" id="fieldname" name="deselected" />   
<br>
<select multiple="multiple" onchange="updateInput(this.value)">
    <option value="selected">Volvo</option>
    <option value="selected">Saab</option>
    <option value="selected">Opel</option>
    <option value="selected">Audi</option>
</select>

Javascript:

function updateInput(deselected){
    var element = document.getElementById("fieldname").name = deselected;
    if (element == "") {
       document.getElementById("fieldname").name = "deselected";
   }
} 

它的作用: 当 select 倍数中的任何内容被 selected 时,来自文本输入的 name="deselected" 属性上面,从 "deselected" 切换到 "selected",然后当 select 倍数中没有任何内容被 selected 时,名称从 "deselected" 切换到 "selected" .

它基于 VALUE="selected" 属性执行此操作。

我需要什么,但不知道怎么做:我需要它来做它现在做的事情,但是基于 CLASS="selected" 属性,而不是 VALUE="selected" 属性。

所以选项看起来像:

<option class="selected">Volvo</option>

而不是:

<option value="selected">Volvo</option>

没有 JQuery,只有 Javascript,随时更新 JSFiddle。

如果您只想更改输入上的 class(并假设没有其他 class 应用于它,因为这个简单的代码将覆盖任何其他 class元素):

function updateInput(select) {  // NB: pass the select, not its value
    document.getElementById("fieldname").className =
        select.selectedOptions.length ? "selected" : "deselected";
}

http://jsfiddle.net/alnitak/2tjgebgq/5/