2017-08-04 108 views
1

我正在使用Django窗体,并修改选项列表(在HTML中)的其中一个字段使用$(文档)形成。当我选择一个选项(可多选列表,可以选择不止一个 - 不是复选框),

this.value 

返回正确的值。但是,当我取消选择该选项时,

this.value 

返回null。为什么会这样呢?只有当选择了某些东西时才会返回一个值(而不是取消选择)?如果是这样,我怎么可以得到被取消

这里的元素的值是我的代码:

$(document).on("change", "#name2", function() { 
    var url = #the url I'm using 
    url += "&field=" + this.value + "&visible=1"; 
    value = this.value 
    ...etc 
+0

提供您的代码,请 –

+0

添加的代码上面 – user7518095

+0

此外,我使用命令+单击取消选择。当我取消选择时,事件处理程序会检测到这一点。 – user7518095

回答

2

的jQuery val()将在<select multiple>或空返回值的数组(取决于版本):

$(document).on('change', '#name2', function() { 
 
    var val = $(this).val() 
 
    console.log(val ? val : 'None selected'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<select size="20" id="name2" multiple=""> 
 
<option value="1">Item 1</option> 
 
<option value="2">Item 2</option> 
 
<option value="3">Item 3</option> 
 
<option value="4">Item 4</option> 
 
<option value="5">Item 5</option> 
 
<option value="6">Item 6</option> 
 
<option value="7">Item 7</option> 
 
<option value="8">Item 8</option> 
 
<option value="9">Item 9</option> 
 
<option value="10">Item 10</option> 
 
</select>

2

可以遍历<select>.selectedOptions财产与multiple属性设置为获取每个选定的.value<option>元件在change事件

function getOptionValues(options) { 
 
    return Array.from(options, function(el) { 
 
    return el.value 
 
    }) 
 
} 
 

 
document.querySelector("select") 
 
.onchange = function() { 
 
    console.log(getOptionValues(this.selectedOptions)) 
 
}
<select multiple> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>