遍历来自多个选择输入的选择值

时间:2018-10-08 22:30:49

标签: javascript jquery

我想遍历多重选择框中的选定值,并对照一个字符串检查它们,一旦找不到匹配项,则返回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>

1 个答案:

答案 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>