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()2つの理由で を捨てます。第一に、jQuery 1.7の時点で減価償却され.on()、 に置き換えられたためです。第二に、24時間の時間を12時間に戻す機能が必要になるためです。もう一度ダブルクリックします。シングル クリックを使用している場合は を使用できますが、ダブル クリックの場合はプラグインを使用する必要があるため、 jQuery-Function-Toggle-Plugin.toggle()を使用することをお勧めします。コードに含めると、次のように使用できます。

$('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 に答える