Tôi đang sử dụng plugin jsTree jQuery với chủ đề hộp kiểm. Có ai biết làm thế nào để có được các giá trị được lựa chọn với một hình thức đăng bài?nhận giá trị đã kiểm tra cho jsTree - gửi kèm theo biểu mẫu bài đăng
Cảm ơn bạn!
Tôi đang sử dụng plugin jsTree jQuery với chủ đề hộp kiểm. Có ai biết làm thế nào để có được các giá trị được lựa chọn với một hình thức đăng bài?nhận giá trị đã kiểm tra cho jsTree - gửi kèm theo biểu mẫu bài đăng
Cảm ơn bạn!
Bạn có câu trả lời không? Nếu không, đây là một trong đó xuất hiện trong jstree google groups
function submitMe(){ var checked_ids = []; $("#server_tree").jstree("get_checked",null,true).each (function() { checked_ids.push(this.id); }); doStuff(checked_ids);
Các giải pháp đề nghị từ các nhóm google tuy nhiên đã không làm việc cho các nút kiểm tra một phần, trong trường hợp của tôi. Tôi đã phải rời khỏi get_checked ra và làm như sau để có được lựa chọn đầy đủ và các nút được chọn một phần.
$(".sector-tree").find(".jstree-undetermined").each(function(i,element){
checked_ids.push($(element).attr("id"));
if ($(this).find(".jstree-undetermined").length == 0) {
$(this).find(".jstree-checked").each(function(i, element){
checked_ids.push({$(element).attr("id"));
});
}
});
// collect the rest of the checked nodes that exist under checked parents
$(".sector-tree").find(".jstree-checked").each(function(i, element){ //also includes the ones below 'undetermined' parent
var selectedElement = $(element).attr("id");
if (hasItem(selectedElement, checked_ids) < 0) {
checked_ids.push(selectedElement);
}
});
Với jQuery
bạn chỉ có thể làm:
$('.jstree-checked,.jstree-undetermined').each(function(){
var rawCheckedID = $(this).find('a').attr('id');
});
này sẽ nhận được chưa xác định và kiểm tra cùng một lúc. giải pháp của soumya ở trên có thể hiệu quả hơn.
Mọi người, những người đã làm việc với Jstree đều có thể gặp phải câu hỏi này: Cách nhận các Id đã kiểm tra của Jstree trong việc gửi biểu mẫu? đây là giải pháp:
function submitMe() {
var checked_ids = [];
$('#your-tree-id').jstree("get_checked",null,true).each(function(){
checked_ids.push(this.id);
});
//setting to hidden field
document.getElementById('jsfields').value = checked_ids.join(",");
}
Bây giờ, chúng tôi đặt nó trong một lĩnh vực ẩn:
<input type="hidden" name="jsfields" id="jsfields" value="" />
//click button show nodes checked
$(document).on('click','#showme',function() {
var checked_ids = [];
var checked_ids_meta = [];
$('#demo_0').jstree("get_checked",null,true).each(function(i, e){
checked_ids.push($(this).data("param")); // json metadata
checked_ids_meta.push($(this).attr("href")); // json attr
});
console.log(checked_ids)
console.log(checked_ids_meta)
});
Trong phiên bản mới nhất (3.0), API đã được thay đổi.
Nếu bạn cần chỉ là mảng của các ID được lựa chọn (như trong ví dụ trong nút này), nó bây giờ rất dễ dàng:
var selectedElmsIds = $('#tree').jstree("get_selected");
Nếu bạn cần để lặp qua các yếu tố được lựa chọn, bạn chỉ cần phải vượt qua thông số "true" bổ sung.
var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
selectedElmsIds.push(this.id);
});
Đối với tôi, ngày 3.3.4 tôi cần sử dụng get_checked, chứ không phải get_selected. – chip
var selectedElmsIds = [];
$("#jstree2").find("li").each(function(i, element) { //also includes the ones below 'undetermined' parent
if ($(this).attr("aria-selected") == "true") {
selectedElmsIds.push($(this).attr('id'));
}
});
console.log(selectedElmsIds);
này tôi đã làm:
function getSelectedItems()
{
var checked_ids = [];
checkedNodes = $("#MyTree").jstree("get_checked", null, true);
for(var i = 0; i < checkedNodes.length; i++)
{
var id = $(checkedNodes[i].outerHTML)[0].id;
checked_ids.push(id);
}
// Do whatever you want with the checked_ids
}
này sẽ cung cấp cho bạn một mảng của tất cả các nút chọn và các nút phụ và lá của họ; cũng như các lá đơn được chọn dưới các nút khác.
$(document).ready(function(){
var jsfields = $('#myTree').jstree('get_selected');
$('.jsfields').val(JSON.stringify([jsfields]));
})
<input type="hidden" class="jsfields" value=""/>
Thay đổi giá trị $('#myTree')
thành cây tương ứng, cách này tốt nhất cho tôi trong cuộc gọi ajax. sửa đổi nhỏ có thể cần thiết để điền vào trường đầu vào của biểu mẫu đơn giản.
Bạn có thể sử dụng này:
var result = $('#your_tree').jstree('get_selected');
hi, vì vậy this.id đề cập đến những gì exactely? và điều gì sẽ xảy ra nếu tôi muốn nhận được văn bản của thẻ? Cảm ơn. –
Tôi nhận được nó :) Nó đề cập đến id của thẻ li. –
+1 cho sự hiểu biết :) –