我有文本输入来输入时间,有时我需要将时间从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');}
});
答案 0 :(得分: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);
}
});
答案 1 :(得分: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(":")
来检查字符串中是否有:
,然后使用.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/
这对你提出的问题可能有点过头了,但希望它会指出你正确的方向。