2011-11-30 54 views
0

我想要做的事时,选择一个选项包含某个词,然而下面不工作:jQuery的做一些事情时所选择的选项的文本包含X

<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')} 
}); 
+0

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

+0

同意,更新。 – ToddN

回答

5

这是一个正确的工作代码:

$('#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

+0

'var message_index = $(this).find('option:selected')。text()' –

+0

yeap - 这是一个更好的选择器,虽然更慢;-) – Leon

+0

真棒,谢谢你这是有道理的。 – ToddN

3

你可以试试这个:

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

JavaScript字符串区分大小写,所以“Kentucky”不会匹配“kentucky”。

+0

+1。这是它。另外,不需要在.change()事件中执行$('#coloroption')。这迫使脚本重新找到有问题的元素。只需使用$(this)来代替。 – maxedison

+0

我在message_index前添加了var,我试着将“肯塔基”改为“肯塔基”,并且我尝试了所有的反应都无济于事。 – ToddN

+0

@maxedison - 这不会工作,因为这是返回值,而不是文本.... – Leon

0

完整的代码:)

<!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> 
+0

-1。我不知道你在这里做什么,但它肯定不是OP说他“需要”的例子。 – maxedison

+0

@maxedison editted!现在好点了吗? :) –

+0

无论如何,你帮了我很多;) – pit

相关问题