jQuery - 将输入与现有 select optgroup 选项进行比较

jQuery - Compare input to existing select optgroup options

我正在尝试以 select 的形式遍历选项。它们被分成 optgroups,我认为这是我遇到问题的地方,我只是找不到正确的语法。

目标是将输入的 .val() 与列表中的 .text() 选项进行比较。如果匹配,将文本变为红色,否则将其变为绿色。

如果我在此处输入无效 ID 而不是 sreportname$("#sreportname option") 那么文本总是变为绿色。输入 sreportname 后,什么也没有发生。我很茫然。

这是我的表格:

<form>
    <select name="sreportname" id="sreportname" class="form-control">
        <option value="zrxqy">--Choose a Report--</option>
        <option value="newReport">--Create a New Report--</option>
        <optgroup label="General Reports">
            <option>Abandoned Mines</option>
        </optgroup>
        <optgroup label="TPS Reports">
            <option>Farm</option>
            <option>Store</option>
            <option>Chicken Coops</option>
        </optgroup>
    </select>
    <input type="text" id="newReportName" name="newReportName">
</form>

这里是 jQuery:

$(document).ready(function () {
    var exists = false;
    $("#newReportName").keyup(function () {
        $("#sreportname option").each(function () {
            if ($(this).text() == content) {
                exists = true;
                return false;
            }
        });
        if(exists) {
            $(this).css("color", "red");
        } else {
            $(this).css("color", "green");
        }
    });
});

我创建了一个 fiddle。有什么想法吗?

你很接近。您只需从 newReportName 获取 content 变量。此外,将 exists 移动到 keyup 函数中:

$("#newReportName").keyup(function () {
  var exists = false;
  var content= $(this).val();
  $("#sreportname option").each(function () {
    if ($(this).text() == content) {
      exists = true;
      return false;
    }
  });
  if(exists) {
    $(this).css("color", "red");
  } else {
    $(this).css("color", "green");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
    <select name="sreportname" id="sreportname" class="form-control">
        <option value="zrxqy">--Choose a Report--</option>
        <option value="newReport">--Create a New Report--</option>
        <optgroup label="General Reports">
            <option>Abandoned Mines</option>
        </optgroup>
        <optgroup label="TPS Reports">
            <option>Farm</option>
            <option>Store</option>
            <option>Chicken Coops</option>
        </optgroup>
    </select>
    <input type="text" id="newReportName" name="newReportName">
</form>