【问题标题】:jQuery do something when selected option text contains Xjquery在选定的选项文本包含x时做某事
【发布时间】:2012-01-09 19:46:57
【问题描述】:

我想在选择的选项包含某个单词时做点什么,但下面的不起作用:

<select id="coloroption">
 <option value="172">Granite Gray</option>
 <option value="174">Hot Red</option>
 <option value="173">Navy</option>
 <option value="171">Kentucky Green</option>
</select>

$('#coloroption').change(function() {
var message_index = $(this).val();
if (message_index.indexOf('Kentucky') >= 0){
                alert('MINIMUM 12')}
});

【问题讨论】:

  • 您的“message_index”变量可能应该用var 声明,除非它真的不应该是事件处理程序的本地变量。

标签: jquery option contains indexof


【解决方案1】:

这是正确的工作代码:

 $('#coloroption').change(function(e) {
    var sel = $('#coloroption')[0];
    var message_index = sel.options[sel.selectedIndex].text;
    if (message_index.toLowerCase().indexOf('kentucky') >= 0){
            alert('MINIMUM 12')
    }
 });

只是打电话

 $('#coloroption').val()

实际上会给你选项的值,所以如果你想使用它,你必须比较'171'而不是文本值......

哦,这是jsFiddle working sample

【讨论】:

  • var message_index = $(this).find('option:selected').text()
  • 是的 - 这是一个更好的选择器,虽然更慢;-)
【解决方案2】:

你可以试试这个:

if (message_index.toLowerCase().indexOf('kentucky') >= 0){

JavaScript 字符串区分大小写,因此“Kentucky”不会匹配“kentucky”。​​

【讨论】:

  • +1。这样做。此外,无需在 .change() 事件中执行 $('#coloroption') 。这会强制脚本重新查找有问题的元素。只需使用 $(this) 代替。
  • 我在message_index前面添加了var,我尝试将“kentucky”更改为“Kentucky”,我尝试了您的回复,但无济于事。
  • @maxedison - 这不起作用,因为它返回的是值而不是文本......
  • Leon 是对的,因为 message_index 包含选项的值而不是文本,所以这个答案不起作用,答案只需要稍微修改。
  • 是的。我只是看了一眼,就像我想象 Pointy 在查看 OP 代码时所做的那样。
【解决方案3】:

完整代码:)

<!DOCTYPE html>
<html>
<head>
  <style>
  div { color:red; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <select id="coloroption">
    <option>Granite Gray</option>
    <option>Hot Red</option>
    <option>Navy</option>
    <option>Kentucky Green</option>
  </select>
<script>

      $('#coloroption').change(function() {
          var str = "";
          $("select option:selected").each(function () {
              str += $(this).text();
          });

          if (str.toLowerCase().indexOf('kentucky') >= 0){
            alert('MINIMUM 12');
          }
        })
        .trigger('change');
</script>

</body>
</html>

【讨论】:

  • -1。我不知道你在这里做什么,但这肯定不是 OP 说他“需要”的一个例子。
  • 无论如何你帮了我很多;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2010-12-09
  • 2020-08-01
  • 2012-07-05
  • 2018-01-05
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多