Ben*_*ava 4 javascript format formatting jquery
我有一个输入字段:
<input type="text" name="time" class="time" value="3" />
Run Code Online (Sandbox Code Playgroud)
我需要这个价值就像03:00
更多我需要的例子:
1 = 01:00
12 = 12:00
12:2 = 12:20
2:2 = 02:20
02:2 = 02:20
340 = 340:00
340:1 = 340:10
Run Code Online (Sandbox Code Playgroud)
你知道其余的.我怎样才能在jquery/javascript中解决这个问题?
这是我在jQuery中尝试的:
$('input').blur(timeFormat);
function timeFormat(e){
skjema.find('input.tid').each(function(){
if($(this).val().length != 0){
var tid = $(this).val().toString();
if(tid.length == 1){
$(this).val(String("0" + tid));
}
if(tid.indexOf(':') == -1){
$(this).val(tid.toString() + ':00');
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
这就是我现在所做的,它完成了这项工作,但它有点笨重:)
function timeFormat(e){
skjema.find('input.tid').each(function(){
if($(this).val().length != 0){
var tid = $(this).val().toString();
tid = (tid.length == 1) ? '0' + tid : tid;
tid = (tid.indexOf(':') == -1) ? tid + ':00' : tid;
if(tid.indexOf(':') != -1){
var arr = tid.split(':');
var before = arr[0].toString();
var after = arr[1].toString();
before = (before.length == 0) ? '00' : before;
before = (before.length == 1) ? '0' + before : before;
after = (after.length == 0) ? '00' : after;
after = (after.length == 1) ? after + '0' : after;
console.log('before: ' + before + ' After: ' + after);
tid = before + ':' + after;
}
}
$(this).val(tid);
});
}
Run Code Online (Sandbox Code Playgroud)
你可以用一些简单的正则表达式做到这一点:
function time( str ) {
if ( !/:/.test( str ) ) { str += ':00'; }
return str.replace(/^\d{1}:/, '0$&').replace(/:\d{1}$/, '$&0' );
}
Run Code Online (Sandbox Code Playgroud)
如果您想确保只接受预期的格式,请在函数顶部添加以下行:
if ( /[^:\d]/.test( str ) ) { return false; }
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/elclanrs/MzgMz/