1

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

<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">

现在我需要返回值34。不必选择选择框选项,我只需要在值字段中输入数字即可。因此,如果输入将读取Plane它应该返回12。此外,我需要这个值是一个变量,所以我可以在 jQuery 中进一步使用它。

我现在已经尝试了一个多小时,但是对于网络上的大多数示例,它总是关于选择选项,我根本没有找到返回值的示例。

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

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

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

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

4

1 回答 1

1

看起来你离得太远了:

这里return

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

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

在不过多更改代码的情况下,您会想到两个选项

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

在第二种情况下, usingeach = 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">

于 2020-06-23T15:18:52.363 回答