チェックボックステーマでjsTree jQueryプラグインを使用しています。誰かがフォーム投稿で選択された値を取得する方法を知っていますか?
ありがとうございました!
答えはありますか?そうでない場合、これは 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);
前のバージョン(3.0)では、APIが変更されました。
選択したIDの配列だけが必要な場合(このノードの例のように)、非常に簡単になりました。
var selectedElmsIds = $('#tree').jstree("get_selected");
選択した要素を反復処理する必要がある場合は、追加の「true」パラメーターを渡すだけです。
var selectedElmsIds = [];
var selectedElms = $('#tree').jstree("get_selected", true);
$.each(selectedElms, function() {
selectedElmsIds.Push(this.id);
});
Jstreeで作業したすべての人は、この質問に直面する可能性があります。フォームで送信されたJstreeのチェックされたIdを送信する方法は?ここに解決策があります:
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(",");
}
今、私たちはそれを隠しフィールドに設定します:
<input type="hidden" name="jsfields" id="jsfields" value="" />
Googleグループから提案されたソリューションは、私の場合、部分的にチェックされたノードでは機能しませんでした。完全に選択されたノードと部分的に選択されたノードを取得するには、get_checkedを残して以下を実行する必要がありました。
$(".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);
}
});
jQuery
を使用すると、簡単に次のことができます。
$('.jstree-checked,.jstree-undetermined').each(function(){
var rawCheckedID = $(this).find('a').attr('id');
});
これにより、未決定とチェックが同時に行われます。上記のsoumyaのソリューションはより効率的です。
あなたはこれを使うことができます:
var result = $('#your_tree').jstree('get_selected');
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);
_$(document).ready(function(){
var jsfields = $('#myTree').jstree('get_selected');
$('.jsfields').val(JSON.stringify([jsfields]));
})
<input type="hidden" class="jsfields" value=""/>
_
$('#myTree')
の値をそれぞれのツリーに変更します。これは、私にとってajax呼び出しで最適に機能します。単純なフォームの入力フィールドに入力するには、わずかな変更が必要になる場合があります。
選択したチェックボックスのID、親ID、テキストを取得するためにこれを行いました。うまくいけば、それは誰かを助けるでしょう:)
function myFunction(elmnt,clr){
elmnt.style.color =clr;
var selectedElmsinfo = [];
var selectedElms = $('#SimpleJSTree').jstree("get_selected", true);
$.each(selectedElms, function() {
selectedElmsinfo.Push(this.id,this.text,this.parent);
});
alert(selectedElmsinfo);
}
これは私がやった:
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
}
これにより、選択したすべてのノードとそのサブノードおよびリーフの配列が得られます。他のノードの下で選択された単一の葉と同様に。
//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)
});