2

我目前正在尝试使用我的脚本更新下拉菜单的值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:00并且data.days[0].end_time会返回17:00:00,我想填充开始和结束的下拉列表,使其具有 9:00-5:00。有没有像我这样更新选项值的正确方法或更好的方法来实现这一点?

4

2 回答 2

1

在您的元素中放置一个 idselect并通过初始值获取您的选项,然后您可以更改textand value

<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");
    });
});

工作小提琴

于 2013-05-10T20:00:19.997 回答
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;

   }
于 2013-05-10T19:51:49.170 回答