选择选项默认不起作用

时间:2013-04-24 09:16:29

标签: javascript html jsp html-select

我的页面中有3个选择标签,我想设置为它们选择的默认值。我搜索了一种方法来做到这一点,它适用于一个但不适用于另一个。我在这里找不到问题。 我得到了我想要的值:

String start =String.valueOf(rule.getStart());
String end =String.valueOf(rule.getEnd());
String numberOfCars = String.valueOf(rule.getNumberOfCars());

我测试了这些值并且它们是正确的。 这些是我的选择标签:

<select id="numberOfCars" name="numberOfCars">
            <option value="1">1</option>            
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="1">4</option>            
            <option value="2">5</option>
            <option value="3">6</option>
            <option value="1">7</option>            
            <option value="2">8</option>
            <option value="3">9</option>
            <option value="3">10</option>
        </select>

<select id="startHour" name="startHour">
            <option value="0">0</option>                    
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>   
        </select>
<select id="endHour" name="endHour" >
            <option value="16">16</option>
            <option value="17">17</option>
            <option value="18">18</option>
            <option value="19">19</option>
            <option value="20">20</option>
            <option value="21">21</option>
            <option value="22">22</option>
            <option value="23">23</option>
        </select>

以下是我找到的功能。一个开始工作完美,但另外两个没有,我找不到原因:

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#endHour option:selected").length)
$("#endHour option[value='<%=end%>']").attr('selected', 'selected');
});
</script>
<script type="text/javascript"> 
$(document).ready(function() {
 if (!$("#numberOfCars option:selected").length)
$("#numberOfCars option[value='<%=numberOfCars%>']").attr('selected', 'selected');
});
</script>
<script type="text/javascript"> 
$(document).ready(function() {
 if (!$("#starHour option:selected").length)
$("#startHour option[value='<%=start%>']").attr('selected', 'selected');
});
</script>

2 个答案:

答案 0 :(得分:0)

<script type="text/javascript"> 
$(document).ready(function() {
  if (!$("#endHour option:selected").length)
$("#endHour option[value='<%=end%>']").attr('selected', true);
});
</script>

如果我的记忆有用,你应该这样做。你应该将它们全部合并在同一个标​​签中。为什么要传播它们?

答案 1 :(得分:0)

由于代码中的错误,startHour选择有效。

$(document).ready(function() {
 if (!$("#starHour option:selected").length)  //Notice its starHour not startHour
$("#startHour option[value='<%=start%>']").attr('selected', 'selected');
});

默认情况下,select中的选项将设置为selected,这会导致条件块中的代码不执行。 StartHour由于选择器中的错误而执行,导致值为0。

尝试删除条件块:

<script type="text/javascript"> 
$(document).ready(function() {
     $("#endHour option[value='<%=end%>']").attr('selected', 'selected');
     $("#startHour option[value='<%=start%>']").attr('selected', 'selected');
     $("#numberOfCars option[value='<%=numberOfCars%>']").attr('selected', 'selected');
});
</script>

这是一个非常简单的示例,说明了基本问题,即默认情况下选择了一个选项。 http://jsfiddle.net/fVjzw/