2011-10-10 50 views
1

我想检测我的页面上用户没有更改其值的下拉列表。 为了实现这个目标,我试图搜索所有的默认值仍然被选中的下拉列表。检测具有特定值的选定列表

var t = $("select[value='Select Team'] select:selected").attr("id"); 
alert(t); 

的警报是: '未定义'

HTML代码:

<TMPL_LOOP DATA_ROLES> 
     <tr id="<TMPL_VAR ID>"> 
      <td><select class="role2" id="role2_<TMPL_VAR ID>" name="role2_<TMPL_VAR ID>" title="The role of the employee"><TMPL_VAR ROLE></select></td> 
      <td><input class="steps" id="steps_<TMPL_VAR ID>" type="text" name="steps_<TMPL_VAR ID>" size="5" title="Total amount of steps per month" value="<TMPL_VAR STEP>"></td> 
      <td><input class="measurable_steps" id="measurable_steps_<TMPL_VAR ID>" type="text" name="measurable_steps_<TMPL_VAR ID>" title="Measurable steps" value="<TMPL_VAR MEASURABLE_STEP>"></td> 
      <td><input class="steps_ratio" id="steps_ratio_<TMPL_VAR ID>" type="text" name="steps_ratio_<TMPL_VAR ID>" title="'Measurable steps'/'Steps'" value="<TMPL_VAR STEPS_RATIO>%" readonly></td> 
      <td style="text-align: center"><select class="reopen_rate" id="reopen_rate_<TMPL_VAR ID>" name="reopen_rate_<TMPL_VAR ID>" title="How many reopenes after closing the SI"><TMPL_VAR REOPEN></select></td> 
      <td><select class="w4p" id="w4p_<TMPL_VAR ID>" name="w4p_<TMPL_VAR ID>"><TMPL_VAR W4P></select></td> 
      <td><select class="team" id="team_<TMPL_VAR ID>" name="team2_<TMPL_VAR ID>"><TMPL_VAR TEAM></select></td> 
      <td><input class="checkbox" id="checkbox_<TMPL_VAR ID>" type=checkbox></td> 
      <td><input class="status2" id="status2_<TMPL_VAR ID>" type="hidden" name="status2_<TMPL_VAR ID>" value="<TMPL_VAR STATUS>"></td> 
     </tr> 
</TMPL_LOOP> 

能否请您协助?

谢谢!

+0

请你把你的HTML你试过 –

+0

'选择[值=“选择团队”]你'select'标签:selected' –

+0

没你看我的答案是没有帮助? –

回答

0
<select value='Select Team' id='select'> 
    <option id='1'>1</option> 
    <option id='2'>2</option> 
    <option id='3' selected >3</option> 
    <option id='4'>4</option> 
</select> 


var t = $('option[value='+$("#select").val()+']').attr("id"); 
alert(t); 

而且u能得到这样

var t = $("select option:selected").attr("id"); 
alert(t); 

U可以试试这里http://jsfiddle.net/BFMD4/1/

+0

它doesn 't works:'var t = $('option [value ='+ $(“。team”).val()+']')。attr(“id”);' - 添加了html代码... – Mike

+0

我的情况是这样的:[链接](http://jsfiddle.net/BFMD4/3/) – Mike

0

Option对象有defaultSelected财产,如果(在你的情况下)的选项,最初选择哪个是真。您只需要检查选定选项是否同时为defaultSelected

var $notChanged = $('select').filter(function() { 
     return $(this).find('option:selected').get(0).defaultSelected 
    }); 

// $notChanged is populated with selects that are not changed 

您的情况:http://jsfiddle.net/BFMD4/4/

,如果你想找到那些由于页面加载不改变即是。

但是,如果你想测试一个特定的值,你有其他的选择。

第一:如果你能在你使用valuesoption元素:

<select> 
    <option>Please select one...</option> 
    <option value="apples">Apples</option> 
    <option value="oranges">Oranges</option> 
    <option value="ponies">Ponies</option> 
</select> 

然后需要检查,如果select比空值以外的值。

var $notChanged = $('select').filter(function() { 
      return $(this).val() === '' 
     }); 
// the $notChanged collection contains unchanged select lists 

第二:如果你绝对必须,因为在你的情况下,使用ID的存储值,而不是value属性

您可以添加一个类(如“初始”)到您想要的选项是你最初的选择: 请选择一个... 苹果 橙子 小马

那你看看这些像这样:

var $notChanged = $('select').filter(function() { 
     return $(this).find('option.initial:selected').length > 0 
    }); 
+0

它看起来不错,但对我来说却不是很有帮助,因为如果初始值是“Select Team”(即team1,team2 ,team3)那么对我来说就行 - 我只想找到初始值为'Select Team'的情况(如果可能的话,没有每个语句)。 – Mike