我试图制定一个计划,我可以点击任何“时间”行并向下拖动以跨越该行,直到我'mouseup'的行。例如,如果我在上午7:30点击下拉到9点,表格数据元素将跨行适当的行数,以便表格数据在该列中从7:30到9:00变为一个块(即星期一)。这是“添加约会”按钮的功能。用mousedown跨越表的行并在jquery中拖动?
我的计划是当我点击时存储tr的索引值,然后从我悬停到的tr的索引中减去该值(而鼠标关闭时)。例如,如果我在第1行点击拖动到第3行然后向上拖动,那么首先点击的td应该将其rowspan属性设置为2.
目前我的函数将跨越多个行,我徘徊多远。所以显然不是从点击减去最初的索引。我不知道为什么。有小费吗?
https://jsfiddle.net/Adam_M/fypw7jka/
这里是我的日程安排和按钮HTML:
<div class="row" id="control-panel">
<button onclick="addAppt()" id="add-appt" title="Add Appointment">+</button>
<p>= Add Appointment</p>
<button onclick="delAppt()" id="del-appt" title="Delete Appointment">-</button>
<p>= Delete Appointment</p>
</div>
<table>
<thead>
<tr class="days-of-the-week">
<th scope="col" class="time-col"></th>
<th scope="col">Sunday</th>
<th scope="col">Monday</th>
<th scope="col">Tuesday</th>
<th scope="col">Wednesday</th>
<th scope="col">Thursday</th>
<th scope="col">Friday</th>
<th scope="col">Saturday</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">7:30 AM</th>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
</tr>
<tr>
<th scope="row">8:00 AM</th>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
</tr>
<tr>
<th scope="row">8:30 AM</th>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
</tr>
<tr>
<th scope="row">9:00 AM</th>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
<td rowspan=""><textarea cols="20" rows="5" class="appt-text"></textarea></td>
</tr>
</tbody>
</table>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<script type="text/javascript" src="scheduler.js"></script>
JavaScript来实现相关功能:
function addAppt() {
$('td').css('cursor', 'cell');
$('textarea').css('cursor', 'cell');
$('td').mousedown(function(){
var initIndex = $(this).parent().index();
$('td').hover(function(){
var spanCount = $(this).parent().index();
var span = spanCount - initIndex;
$(this).attr('rowspan', span);
$(this).addClass('highlight');
});
});
$('td').mouseup(function(){
$('td').off('mouseenter mouseleave');
});
}
你拨弄不工作 - 它缺少脚本'scheduler.js'。 –
@KScandrett它在我点击它时起作用......我只是将脚本从scheduler.js复制并粘贴到jsfiddle的javascript部分。它应该在那里。 –
这是我在上面描述的尝试中更新的小提琴。 https://jsfiddle.net/Adam_M/fypw7jka/5/ 行正在基于我单击的行的索引进行跨越。所以变量initIndex不会像我预期的那样被减去。当我拖动时,我还有一个意外的功能,将列添加到表格的右侧。我不知道发生了什么。 –