Javascript 从多选输入中迭代选定值
我想从多个选择框中遍历所选的值,并根据字符串检查它们,一旦没有找到匹配项,就返回false。首先,我尝试:Javascript 从多选输入中迭代选定值,javascript,jquery,Javascript,Jquery,我想从多个选择框中遍历所选的值,并根据字符串检查它们,一旦没有找到匹配项,就返回false。首先,我尝试: var exampleString = "example"; var mySelections = $("#mySelect option:selected"); for (selection in mySelections) { if (exampleString.indexOf(mySelections[selection].text()) === -1) {
var exampleString = "example";
var mySelections = $("#mySelect option:selected");
for (selection in mySelections) {
if (exampleString.indexOf(mySelections[selection].text()) === -1) {
return false;
};
};
但是,这段代码给了我一个错误:“文本不是函数”。我了解到这是因为使用索引会获取option对象本身,而不是用jQuery包装,而提供text()方法的是jQuery
我使用each函数尝试了另一个版本:
var result = $("#mySelect option:selected").each(function () {
if (exampleString.indexOf($( this ).text()) === -1) {
return false;
}
});
然而,我不明白我得到的结果。我天真地假设我的变量结果将被设置为false或true,但它似乎只是。除了在函数中创建一个设置为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>
A.
B
C
这就是我要做的(我不再是jQuery用户):
让testStr=“dd”;
document.getElementById('sel')。addEventListener('change',(e)=>{
常量值=[]
对于(让i=0;i将mySelections[selection]
更改为mySelections.eq(selection)
,并查看您的逻辑是否更改,因为eq()
返回jQuery对象这在没有HTML的情况下是很难回答的。您能提供吗?您尝试过$(this.val())
取而代之的是?谢谢你,@Taplar!这是一个多么简单的解决方案。我没有足够的声誉来接受甚至投票支持你的答案,但我很感激。@HolayMolay我已经更新了这篇文章,加入了相关的html,以防万一它能帮助其他人阅读。