-2

在此处输入图像描述

嗨,如上图所示,我正在创建一个简单的日历以在我的项目中使用。

表格的 HTML:

<table>
<tr><th>time</th><th>2012-12-23</th>etc..</tr>
<tr><th>09:00AM</th><td></td><td></td>etc...</tr>

并且 ii 使用 jquery(selectable) 让那些 td 可选择。

我的问题:当用户单击保存将表单数据发布到 php 文件时,我如何还包括所选 td 的日期和时间?

例如:我希望当用户点击立即保存(在 img 上方)时,它会发送“2012-12-24 12:00 PM”


问题解决了“raina77ow”的答案。

但是从评论和我的 -ve 投票中,我认为我的问题很简短,所以我添加了代码以使事情变得清晰:0

HTML

  <FORM id='booking_form'>
A form that u see above in img</form><a id='save'>save</a>
        <h1>Week Calendar</h1>
        <div class="body">
            <table id='schedule'>
                <thead>
                <tr><th>Time</th><?foreach($cal[0] as $d)echo "<th>$d</th>";//$cal[0]contain week days starting from today?></tr>
                </thead>
                <?//create our table by nice clean loop
                $start_time = "09:00:00";
            $end_time = "20:00:00";
            while(strtotime($start_time) <= strtotime($end_time)){?>
            <tr>
                <th><?=date("h:i A", strtotime($start_time));?></th>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <?
            $start_time = date("H:i:s", strtotime("$start_time +60 minutes"));
            }//end while
            ?>

            <tr></tr>
    </table>

点击保存按钮时的JS

var datas=$('#booking_form').serialize();
        var request = $.ajax({
                        url: "./booking/add",
                        type: "POST",
                        data: datas,
                        dataType: "html"
                        });

        request.done(function(msg) {$info.html( msg );});
        request.fail(function(jqXHR, textStatus) {$info.html( "<div id='error'>" + textStatus +"</div>");});
        request.success(function(data){$info.html(data);});
        return false;

这是我的问题,如何将所选字段的时间和日期添加到该 ajax 帖子中。感谢您的回答,我想出了在#booking_form name=date 和 name=time 中添加 2 个隐藏输入,并添加了选定的选项来为它们添加值。

    $schedule.selectable({
    filter: 'td',
    selected: function( event, ui ) {
        var time = $(ui.selected).parent().children(':first').text();
            date = $(ui.selected).closest('table').children(':first').find('th').eq($(ui.selected).index()).text();
        $('#booking_form').find('[name=date]').val(date);
        $('#booking_form').find('[name=time]').val(time);
    }
    });

我发现这是最佳答案非常感谢

4

3 回答 3

2

很容易获得时间 - 因为它是点击行的第一个单元格。要获取“日期”列,我们可以使用该index方法。

$('td').click(function() {
  var $cell = $(this);
    time = $cell.parent().children(':first').text();
    date = $cell.closest('table').children(':first').find('th').eq($cell.index()).text();
    alert(date + ' ' + time);
});​

JS小提琴

于 2012-12-23T17:01:31.597 回答
2

试试这个:

$('td').click(function() {
    var $td = $(this);
    var $th = $td.closest('table').find('th').eq($td.index());

    // Get the header text...
    alert($th.text());

    var $firstTD = $td.closest('tr').find('td:first');

    // Get the first td text...
    alert($firstTD.text());
});​
于 2012-12-23T17:06:11.183 回答
1

使用纯 JavaScript,一旦你拥有<td>,你可以得到:

var time = td.parentNode.cells[0].firstChild.nodeValue,
    date = td.parentNode.parentNode.rows[0].cells[td.cellIndex].firstChild.nodeValue;
于 2012-12-23T17:01:42.483 回答