关于javascript中开始时段更改的下拉验证

时间:2013-05-12 21:59:04

标签: javascript jquery validation

我只是想知道如何根据用户在开始时段中选择的内容更新长度中的值。

例如,如果用户选择09:00 - 09:50,则开始期的选项为1-7。

如果用户选择10:00 - 10:50,则开始时段的选项为1-6。

...

如果用户选择17:00 - 17:50,那么开始时段会有选项1。

我如何使用javascript实现这一目标?

到目前为止,这是我的代码:

http://jsfiddle.net/RmXuH/

<p>
  <label>Start Period</label>
  <select onchange="reloadRoomPreference();" id = "edit_req_start" name="">
    <option>09:00 - 09:50</option>
    <option>10:00 - 10:50</option>
    <option>11:00 - 11:50</option>
    <option>12:00 - 12:50</option>
    <option>13:00 - 13:50</option>
    <option>14:00 - 14:50</option>
    <option>15:00 - 15:50</option>
    <option>16:00 - 16:50</option>
    <option>17:00 - 17:50</option>
  </select>
</p>
<p>
  <label>Length</label>
  <select onchange="reloadRoomPreference();" id = "edit_req_length" name="">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
  </select>
</p>

1 个答案:

答案 0 :(得分:1)

像这样的事情:

<p>
  <label>Start Period</label>
  <select onchange="reloadRoomPreference();" id = "edit_req_start" name="">
    <option value="0">09:00 - 09:50</option>
    <option value="1">10:00 - 10:50</option>
    <option value="2">11:00 - 11:50</option>
    <option value="3">12:00 - 12:50</option>
    <option value="4">10:00 - 13:50</option>
    <option value="5">14:00 - 14:50</option>
    <option value="6">15:00 - 15:50</option>
    <option value="7">16:00 - 16:50</option>
    <option value="8">17:00 - 17:50</option>
  </select>
</p>
<p>
  <label>Length</label>
  <select onchange="reloadRoomPreference();" id = "edit_req_length" name="">
  </select>
</p>

使用Javascript:

var optionsValue = [1, 2, 3, 4, 5, 6, 7] //Contains the values displayed in the second dropdown

//Populate with all the values
for (var i = 0; i < optionsValue.length ; i++)
    $('#edit_req_length').append('<option>' + optionsValue[i] + '</option>');

//Triggered each time you change the first dropdown
$('#edit_req_start').on('change', function(data) {
    var options = $(this).children('option');
    $('#edit_req_length').empty();
    for (var i = 0; i < optionsValue.length - $(this).val() ; i++)
        //This way, we don't have any empty value
        if (i >= optionsValue.length)
            $('#edit_req_length').append('<option>' + optionsValue[optionsValue.length - 1] + '</option>');
        else
            $('#edit_req_length').append('<option>' + optionsValue[i] + '</option>');
});

JSFiddle:http://jsfiddle.net/hda7f/

但是你在第一个下拉列表中的值比在第二个下拉列表中有更多的值,所以我添加了一个条件,在第二个下拉列表中留下至少一个项目。