添加前导零以递增Jquery下拉列表

时间:2016-03-29 17:35:55

标签: javascript jquery

我一直在尝试修改sharepoint中的日期下拉菜单,因为默认情况下,分钟下拉菜单只允许您选择5分钟的时间间隔。我最初使用以下代码完成了它的工作:

$("select[id$='DateTimeFieldDateMinutes']").empty();

var newOptions = {00: "00",
  01: "01",
  02: "02",
  03: "03",
  04: "04",
  05: "05",
  06: "06",
  07: "07",
  08: "08",
  09: "09",
  10: "10",
  11: "11",
  12: "12",
  13: "13",
  14: "14",
  15: "15",
  16: "16",
  17: "17",
  18: "18",
  19: "19",
  20: "20",
  21: "21",
  22: "22",
  23: "23",
  24: "24",
  25: "25",
  26: "26",
  27: "27",
  28: "28",
  29: "29",
  30: "30",
  31: "31",
  32: "32",
  33: "33",
  34: "34",
  35: "35",
  36: "36",
  37: "37",
  38: "38",
  39: "39",
  40: "40",
  41: "41",
  42: "42",
  43: "43",
  44: "44",
  45: "45",
  46: "46",
  47: "47",
  48: "48",
  49: "49",
  50: "50",
  51: "51",
  52: "52",
  53: "53",
  54: "54",
  55: "55",
  56: "56",
  57: "57",
  58: "58",
  59: "59"
};

var $el = $("select[id$='DateTimeFieldDateMinutes']");
$el.empty(); // remove old options
$.each(newOptions, function(value,key) {
  $el.append($("<option></option>")
     .attr("value", value).text(key));
});

我尝试通过执行以下操作来清理并优化它:

$("select[id$='DateTimeFieldDateMinutes']").empty();
$(function(){
    var $select = $("select[id$='DateTimeFieldDateMinutes']");
    for (i=0+0;i<=59;i++){
        $select.append($('<option></option>').val(i).html(i))
    }
});

然而,当我这样做时,我失去了html值中的前导零。无论如何要做到这一点还是我坚持用我的笨蛋方法?

4 个答案:

答案 0 :(得分:0)

只需添加一个检查是否小于10即可添加前导零。

$("select[id$='DateTimeFieldDateMinutes']").empty();
$(function(){
    var $select = $("select[id$='DateTimeFieldDateMinutes']");
    for (i=0+0;i<=59;i++){
        var min = i < 10 ? '0'+i : i;
        $select.append($('<option></option>').val(i).html(min))
    }
});

答案 1 :(得分:0)

只需转换为字符串,如果i <10

,则添加0
$(function(){
    var $select = $("select[id$='DateTimeFieldDateMinutes']");
    for (var i=0; i<=59; i++){
        var strnum = (i<10?"0":"") + i;
        $select.append($('<option/>').val(strnum).html(strnum))
    }
});

答案 2 :(得分:0)

您可以使用自定义打击垫功能:

var pad = function (n) {return n<10? '0'+n:''+n;}
for (i=0+0;i<=59;i++){
    $select.append($('<option></option>').val(i).html(pad(i)))
}

答案 3 :(得分:0)

0+0实际上是一个字符串。如果你递增它,JavaScript会尝试将其解析为数字或返回NaN

而不是这样做,改为:

for (i=0;i<=59;i++){
  var padded = i < 10 ? "0" + i : "" + i;
  $select.append($('<option></option>').val(padded).html(padded));
}