从下拉菜单中更新选项

时间:2013-05-10 19:37:27

标签: jquery grails drop-down-menu option

我目前正在尝试使用我的list.gsp中的脚本更新下拉菜单的值。我正在从JSON中的控制器中检索start_timeend_time值,并尝试使用这些新值更新当前的静态下拉列表。

这是我现在要更新选项值的调用,但它不起作用:

    $("#mondayStartTime").html(data.days[0].start_time);

这是我想要更新的静态下拉菜单,从特定值start_time一直到开始和结束时间下拉的end_time。

    <tr>
        <td style="text-align: center; width: 115px;">
            <select>
                 <option id="mondayStartTime>--Start--</option>

例如data.days[0].start_time将返回09:00:00data.days[0].end_time将返回17:00:00,我想填充下拉列表,包括开始和结束时间为9:00-5 :00。是否有正确的方法来更新选项值,如我的方式或更好的实现方法?

2 个答案:

答案 0 :(得分:1)

在您的select元素中添加一个ID并按初始值获取您的选项,然后您可以更改textvalue

<select name="test" id="test">
  <option value="mondayStartTime">--Start--</option>
</select>
<input type='button' id='changeText' value='Change me!' />


$(function(){
    $('#changeText').click(function(){
        $('#test option[value=mondayStartTime]').text("09:00-17:00");
        $('#test option[value=mondayStartTime]').val("09:00,17:00");
    });
});

Working fiddle

答案 1 :(得分:0)

您可以将时间转换为12小时格式 fiddle

function tConvert (time) {
 // Check correct time format and split into components
  time = time.toString ().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];

 if (time.length > 1) { // If time format correct
   time = time.slice (1);  // Remove full string match value
   time[5] = +time[0] < 12 ? 'AM' : 'PM'; // Set AM/PM
   time[0] = +time[0] % 12 || 12; // Adjust hours
  }
   return time.join (''); // return adjusted time or original string
}



  $("#mondayStartTime").html(tConvert (data.days[0].start_time));

编辑

使用此选项以12小时格式获取整个范围

 function tConvert (time) {
 // Check correct time format and split into components
  time = time.toString ().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];

  if (time.length > 1) { // If time format correct
    time = time.slice (1);  // Remove full string match value
    time[3] = +time[0] < 12 ? 'AM' : 'PM'; // Set AM/PM
    time[0] = +time[0] % 12 || 12; // Adjust hours
   }
  return time.join (''); // return adjusted time or original string
  }

 alert(buid('09:00:00','18:00:00'));
 function buid(start,end)
  {
   var strt =   start.split(':')[0]; 
   var endd =   end.split(':')[0];
   var rangeArray = new Array();
   for(i=strt;i<=endd;i++)
   {
          rangeArray.push(i+':00:00');
   }

    var timeArray = new Array();
   for(j in rangeArray)
   {
        timeArray.push(tConvert(rangeArray[j]));
   }        
   console.log(timeArray);    
   return timeArray;

   }