通过 searching/filtering 部分选项文本和输出值作为 jQuery 变量从 select 选项获取值

Get value from select option by searching/filtering partial option text and output value as jQuery variable

我在页面上有一个选择框,如下所示:

<select id="mySelect" autocomplete="off" class="inputbox input-large">
 <option value="">- Select option -</option>
 <option value="1">Car</option>
 <option value="12">- Plane</option>
 <option value="34">- - Train</option>
</select>

在同一页上我也有这样的输入:

<input type="text" id="myInput" name="myInput" value="Train">

现在我需要 return 值 34。不必选择选择框选项,我只需要具有值字段内的数字即可。因此,如果输入为 Plane,它应该 return 12。此外,我需要将该值作为一个变量,以便我可以在 jQuery.

中进一步使用它

一个多小时以来,我一直在尝试获取此信息,但对于网上的大多数示例,它总是与选择选项有关,而我只是没有找到关于 returning 值的示例。

到目前为止,我所拥有的甚至还不到我需要的一半,但我将其包括在内,以便每个人都可以看到我正在努力。

  $str = $('#myInput').val();

  var exists = false;
  $("#mySelect option").filter(function() {
      return $(this).text().replace(/-/g,"").trim() == $str;
      var exists = true;
  });
  console.log(exists);

对于愿意写代码示例的每个人,请从头开始,因为上面的错误可能有一百种不同的方式;-)

看起来你离得太远了:

这里的return

    return $(this).text().replace(/-/g,"").trim() == $str;
    exists = true;

在 运行 的下一行中停止 exists = true - return 在该点退出(匿名过滤器)函数并且在它运行之后没有代码(在该函数内)。

有两个选项 spring 需要注意而无需过多更改您的代码

  • 使用.filter然后检查结果
  • 使用.each并在循环内设置exists

在第二种情况下,使用 each = each || [test] 意味着它会在设置后保持 true - 如果您使用的是简单的 for 那么您将添加一次 break找到了。

$str = $('#myInput').val();

var exists = false;
var filtered = $("#mySelect option").filter(function() {
  return $(this).text().replace(/-/g, "").trim() == $str;
});
exists = filtered.length > 0;

console.log(exists);

exists = false;
$("#mySelect option").each(function() {
  exists = exists || $(this).text().replace(/-/g, "").trim() == $str;
});
console.log(exists);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="mySelect" autocomplete="off" class="inputbox input-large">
  <option value="">- Select option -</option>
  <option value="1">Car</option>
  <option value="12">- Plane</option>
  <option value="34">- - Train</option>
</select>

<input type="text" id="myInput" name="myInput" value="Train">