我想遍历多重选择框中的选定值,并对照一个字符串检查它们,一旦找不到匹配项,则返回false。首先,我尝试过:
var exampleString = "example";
var mySelections = $("#mySelect option:selected");
for (selection in mySelections) {
if (exampleString.indexOf(mySelections[selection].text()) === -1) {
return false;
};
};
此代码给我一个错误,但是:“文本不是函数”。我被理解为这是因为使用索引获取的是选项对象本身,而不是包装在jQuery中,而jQuery提供了text()方法。
我尝试了使用每个功能的替代版本:
var result = $("#mySelect option:selected").each(function () {
if (exampleString.indexOf($( this ).text()) === -1) {
return false;
}
});
但是,我不明白我得到的结果。我天真地假设我的变量结果将设置为false或true,但似乎只是return the objects being iterated over。除了创建一个在函数内部设置为true或false的全局变量之外,还有什么方法可以访问这些字符串比较的结果?
根据要求进行编辑以添加:,以下是相关的html:
<select multiple="" class="filterSelect" id="mySelect" style="display: none;">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
答案 0 :(得分:0)
这就是我要做的(我不再是jQuery用户):
let testStr = "dd";
document.getElementById('sel').addEventListener('change', (e) => {
const values = []
for (let i=0; i<e.target.selectedOptions.length; i++) {
values.push(e.target.selectedOptions[i].value);
}
console.log(!values.includes(testStr));
return !values.includes(testStr);
})
<select id="sel" multiple>
<option value="aa">aa</option>
<option value="bb">bb</option>
<option value="cc">cc</option>
<option value="dd">dd</option>
<option value="ee">ee</option>
</select>