我如何在jquery中获得预约时间(从时间到时间)

时间:2012-06-23 09:30:35

标签: javascript jquery

我在拖动时隙单元格时选择时隙。选择时段后,我在文本框中输入患者姓名,然后单击选择按钮,然后患者姓名进入选定的时间段。用户可以选择多个时间段用于多个患者姓名和按钮分配按钮我必须将带有时间段(从时间到时间)的患者姓名插入到数据库中。

我在获取分配时间时遇到问题ie.From time to To time in jquery。

$("#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());

            };
        });
    });
}

see jsbin on dragging on time slot cell

1 个答案:

答案 0 :(得分:3)

好的,这是一种方法:

迭代第三个单元格具有rowspan属性的每一行。这表示新约会的开始。您可以通过获取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();

DEMO

我会让你弄清楚如何正确格式化时间;)

注意:这在很大程度上取决于您当前的表结构,如果您更改它可能会中断。为了使事情更加灵活,您可以向包含重要信息的单元格添加类,例如hour到每个包含一天中小时的第一个单元格,并appointment_start添加到约会单元格。然后你可以通过这些来搜索/过滤。