I want to deny the user to drop the blue fields into the first column.
I found a sample and redesigned it a bit to make clear what I want to do...
$(document).ready(function() {
$('.event').on("dragstart", function(event) {
var dt = event.originalEvent.dataTransfer;
dt.setData('Text', $(this).attr('id'));
});
$('table td').on("dragenter dragover drop", function(event) {
event.preventDefault();
if (event.type === 'drop') {
var data = event.originalEvent.dataTransfer.getData('Text', $(this).attr('id'));
de = $('#' + data).detach();
de.appendTo($(this));
};
});
})
table th,
table td {
height: 30px;
width: 200px;
}
table span {
display: block;
background-color: #09C;
height: 30px;
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="#our_table" border="1" cellspacing=0>
<tr>
<th>Deny Drop on this column</th>
<th>Used</th>
<th>Available</th>
</tr>
<tr>
<td>Firstname</td>
<td></td>
<td rowspan=5>
<span class="event" id="a" draggable="true">Firstname</span>
<span class="event" id="b" draggable="true">Lastname</span>
<span class="event" id="c" draggable="true">Street</span>
<span class="event" id="d" draggable="true">Age</span>
<span class="event" id="e" draggable="true">Country</span>
<span class="event" id="f" draggable="true">Nickname</span>
<span class="event" id="g" draggable="true">Phone</span>
</td>
</tr>
<tr>
<td>Lastname</td>
<td></td>
</tr>
<tr>
<td>Street</td>
<td></td>
</tr>
<tr>
<td>Zipcode</td>
<td></td>
</tr>
<tr>
<td>City</td>
<td></td>
</tr>
</table>
May the code I use isnt the best so im open to some better solutions :)
I was wondering if its possible to deny the drag and drop functionality to first cell of table?
Make this selector $('table tr td:not(:first-child)')
$(document).ready(function() {
$('.event').on("dragstart", function(event) {
var dt = event.originalEvent.dataTransfer;
dt.setData('Text', $(this).attr('id'));
});
$('table tr td:not(:first-child)').on("dragenter dragover drop", function(event) {
event.preventDefault();
if (event.type === 'drop') {
var data = event.originalEvent.dataTransfer.getData('Text', $(this).attr('id'));
de = $('#' + data).detach();
de.appendTo($(this));
};
});
})
table th,
table td {
height: 30px;
width: 200px;
}
table span {
display: block;
background-color: #09C;
height: 30px;
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="#our_table" border="1" cellspacing=0>
<tr>
<th></th>
<th>Used</th>
<th>Available</th>
</tr>
<tr>
<td>Firstname</td>
<td></td>
<td rowspan=5>
<span class="event" id="a" draggable="true">Firstname</span>
<span class="event" id="b" draggable="true">Lastname</span>
<span class="event" id="c" draggable="true">Street</span>
<span class="event" id="d" draggable="true">Age</span>
<span class="event" id="e" draggable="true">Country</span>
<span class="event" id="f" draggable="true">Nickname</span>
<span class="event" id="g" draggable="true">Phone</span>
</td>
</tr>
<tr>
<td>Lastname</td>
<td></td>
</tr>
<tr>
<td>Street</td>
<td></td>
</tr>
<tr>
<td>Zipcode</td>
<td></td>
</tr>
<tr>
<td>City</td>
<td></td>
</tr>
</table>
You could check if td is() first-child:
$(document).ready(function() {
$('.event').on("dragstart", function(event) {
var dt = event.originalEvent.dataTransfer;
dt.setData('Text', $(this).attr('id'));
});
$('table td').on("dragenter dragover drop", function(event) {
event.preventDefault();
if (event.type === 'drop' && !$(this).is( "td:first-child" )) {
var data = event.originalEvent.dataTransfer.getData('Text', $(this).attr('id'));
de = $('#' + data).detach();
de.appendTo($(this));
};
});
})
table th,
table td {
height: 30px;
width: 200px;
}
table span {
display: block;
background-color: #09C;
height: 30px;
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="#our_table" border="1" cellspacing=0>
<tr>
<th></th>
<th>Used</th>
<th>Available</th>
</tr>
<tr>
<td>Firstname</td>
<td></td>
<td rowspan=5>
<span class="event" id="a" draggable="true">Firstname</span>
<span class="event" id="b" draggable="true">Lastname</span>
<span class="event" id="c" draggable="true">Street</span>
<span class="event" id="d" draggable="true">Age</span>
<span class="event" id="e" draggable="true">Country</span>
<span class="event" id="f" draggable="true">Nickname</span>
<span class="event" id="g" draggable="true">Phone</span>
</td>
</tr>
<tr>
<td>Lastname</td>
<td></td>
</tr>
<tr>
<td>Street</td>
<td></td>
</tr>
<tr>
<td>Zipcode</td>
<td></td>
</tr>
<tr>
<td>City</td>
<td></td>
</tr>
</table>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With