【发布时间】:2016-07-17 02:42:30
【问题描述】:
我的代码只包含两个元素。第一个元素是输入(#nameInput),第二个是选择(#select)。
我的目标是检查是否有 <option> 的文本等于当前的 #nameInput 值。
请看下面的例子,如果输入中插入的文本已经存在于option,输入的边框会变成红色(addClass错误)。
但是:contains 有一个问题,因为它会找到选项文本中包含的文本,而不是我正在寻找的完全匹配。
如下例所示,有a & aaa 文本选项,但即使插入aa 或aaaa 也会出现错误(类)。
还有一个例子,它不起作用 -> my option - 仅插入 my 时出现错误。
$("#nameInput").change(function(){
var t = $(this);
var t_val = $(this).val();
if(
$("#select option:contains(" + t_val + ")" ).length
) {
t.addClass("error");
}
else {t.removeClass("error");}
});
input, select {width: 50%; height: 32px;}
input.error {border: 5px solid red;}
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<input id="nameInput" type="text"/><br/><br/>
<select id="select">
<option value="default" selected disabled>Select..</option>
<option class="option">a</option>
<option class="option">aaa</option>
<option class="option">bbb</option>
<option class="option">bbbbbb</option>
<option class="option">my option</option>
</select>
【问题讨论】: