0

タイムスロットセルをドラッグしてタイムスロットを選択しています。タイムスロットを選択した後、テキストボックスに患者名を入力し、選択ボタンをクリックすると、患者名が選択したタイムスロットに移動します。ユーザーは複数の患者名に複数のタイムスロットを選択でき、割り当てボタンをクリックすると、タイムスロット付きの患者名(随時)をデータベースに挿入する必要があります。

jqueryで割り当てられたタイムスロット、つまりFromtimeとTotimeを取得するのに問題があります。

$("#btnAllot").click(function () {
    //how i get alloted time here.
    $('tr').each(function () {
        $(this).find('td').each(function () {
            if ($(this).hasClass('yell')) {
                alert($(this).closest('tr').find('td:eq(0)').text());

            };
        });
    });
}

タイムスロットセルのドラッグについては、jsbinを参照してください

4

1 に答える 1

3

わかりました、これを行う1つの方法があります:

rowspan3番目のセルに属性がある各行を繰り返し処理します。これは、新しい予定の開始を示します。兄弟(一種)を調べることで開始時刻を取得し、rowspan - 1要素である行を削除することで終了時刻を取得できます。

より良い方法があるかもしれませんが、これはあなたにスタートを与えるかもしれません。

例えば:

var find_closest_hour = function($row) {
    var $cell = $row.children('td:first-child'),
        hour = "";
    // probably add something here
    while($cell.length && !(hour = $.trim($cell.text()))) {
        $cell = $cell.parent().prev().children('td:first-child');
    }
    return hour;
};

var $all_tds = $('#tableAppointment tr td:nth-child(3)'),
    $tds = $all_tds.filter('[rowspan]'); 

// will contain a list of objects [{patient: name, start: time, end: time},...]
var appointments = $tds.map(function() {
    var $this = $(this),
        $row = $this.parent(),
        $cells =  $row.children('td'),
        patient = $.trim($this.text()),
        start = find_closest_hour($row).split(':', 1) + ":" + $.trim($cells.eq(1).text()),
        $end_row, end;

    if(this.rowspan == 1) {
        end = start;
    }
    else {
        $end_row = $all_tds.eq($all_tds.index(this) + this.rowSpan - 1).parent();
        end = find_closest_hour($end_row).split(':', 1) + ":" + $.trim($end_row.children('td').eq(1).text());
    }

    return {patient: patient, start: start, end: end};
}).get();

デモ

時刻を正しくフォーマットする方法を説明します;)

注:これは現在のテーブル構造に大きく依存し、変更すると破損する可能性があります。物事をより柔軟にするために、重要な情報を含むセルにクラスを追加できます。たとえばhour、時刻を含む最初の各セルやappointment_start予定のセルにクラスを追加できます。次に、これらで検索/フィルタリングできます。

于 2012-06-23T11:00:06.063 に答える