1

我有文本输入来输入时间,有时当我双击输入时我需要将时间从 12 小时格式更改为 24 格式.. 所以我怎样才能像这样转换时间:

1:00 => 13:00

01:00 => 13:00

(提示)我的代码:

   $("input").live('dblclick', function(){
    var type12 = $(this).val();
    if (type12.length == 4){
    var time = type12.replace(/\:/, '');
    var hh = time.substr(0,1);
    var mm = time.substr(0,3); // TO DO
    var type24 = Number(hh) + 12;
    var time24 = hh + mm;
    $(this).val(time24);
    sortTimes($(this).closest("tr"));
    }else{alert('not');}
});
4

2 回答 2

1

这是答案

   $("input").live('dblclick', function(){
    var type12 = $(this).val();
    if (type12.length == 4){
        var time = type12.replace(/\:/, '');
        var hh = time.substr(0,1);
        var mm = time.substr(1,2);
        var hh = Number(hh) + 12;
        var time24 = hh + ':' + mm;
        $(this).val(time24);
    }else if(type12.length == 5 && type12.substr(0,1) == 0) {
        var time = type12.replace(/\:/, '');
        var hh = time.substr(0,2);
        var mm = time.substr(2,2);
        var hh = Number(hh) + 12;
        var time24 = hh + ':' + mm;
        $(this).val(time24);
    }
});
于 2012-08-01T02:37:18.160 回答
1

根据我的评论,这就是我要做的。首先,您应该真正为您的 12 小时时间定义一个一致的字符串。我会使用格式hh:mm am / hh:mm pm

其次,我会放弃这.live()两个原因,首先,因为从 jQuery 1.7 开始,它已被折旧并替换为.on(),其次是因为您需要具有将 24 小时时间转换回 12 小时时间按钮的功能第二次被双击。如果您使用单击,我们可以使用.toggle(),但是对于双击,我们将需要使用插件,我建议使用jQuery-Function-Toggle-Plugin。一旦包含在您的代码中,它就可以像这样使用:

$('input').funcToggle('dblclick', function() {
    //Odd Click
}, function() {
    // Even Click
});

接下来,我们可以使用.indexOf(":"), 来检查字符串中是否包含 a ,而不是使用子字符串,这虽然非常好,但:然后 .split(":") 将字符串拆分为数组。我是这样做的:

var type12 = "12:45";
if (type12.indexOf(":") != -1) {
    time_array = type12.split(":");
    hh = time_array[0];  //12
    mm = time_array[1];  //45
}

完整的代码和示例可以在这里找到 --> http://jsfiddle.net/374xN/4/

对于您的要求,这可能有点矫枉过正,但希望它能为您指明正确的方向。

于 2012-08-01T03:28:52.030 回答