2016-02-19 15 views
5

Ich habe diese JsTreeJsTree Checkbox - überprüft Ereignis

enter image description here

mit diesem Code:

var Tree = $("#MyTree"); 

     Tree.jstree({ 
      "core": { 
       "themes": { 
        "responsive": false, 
        "multiple" : false, 
       }, 
       "data": dataTree 
      }, 
      "types": { 
       "default": { 
        "icon": "icon-lg" 
       }, 
       "file": { 
        "icon": "icon-lg" 
       } 
      }, 
      "ui": { 
       "select_limit": 1, 
      }, 
      "plugins": ["wholerow", "types", "checkbox", "ui", "crrm", "sort"], 
      "checkbox": { 
       "three_state": false, 
       "real_checkboxes": false 
      } 
     }); 

Ich brauche die Auswahl und die Kontrolle Aktion zu trennen, muss der Benutzer alle Knoten überprüft er will aber nur eine Zeile für die Zeit auswählen. für jetzt, wenn ich überall in der Zeile klicken Sie diese Zeile markieren und überprüfen Sie diesen Knoten, ich muss das Kontrollkästchen nur, wenn der Benutzer darauf klicken.

Ich versuche, so viel Ereignis, aber das einzige, dass die Arbeit ist:

Tree.on("changed.jstree", function (e, data) { }); 

, die sowohl die Wirkung der Auswahl zu fangen und überprüfen.

Irgendwelche Vorschläge?

Antwort

13

Diese Antwort bezieht sich auf die Veröffentlichung 3 von jstree - das ist, was Sie im Jahr 2016 verwenden sollten. Leider ist Ihr Beispielcode, scheint mit jstree rel 1, und ich kann Ihnen nicht darüber helfen.

Für Release 3

Zunächst einmal aufzuschnüren die ausgewählte und die überprüften Staaten (checkbox.tie_selection: false) - siehe the docs

Verwenden Sie dann die check_node.jstree Ereignis

Arbeits Beispiel

var data1 = [{ 
 
     "id": "W", 
 
     "text": "World", 
 
     "state": { "opened": true }, 
 
     "children": [{"text": "Asia"}, 
 
        {"text": "Africa"}, 
 
        {"text": "Europe", 
 
        "state": { "opened": false }, 
 
        "children": [ "France","Germany","UK" ] 
 
     }] 
 
    }]; 
 

 
$('#Tree').jstree({ 
 
    core: { 
 
     data: data1, 
 
     check_callback: false 
 
    }, 
 
    checkbox: {  
 
     three_state : false, // to avoid that fact that checking a node also check others 
 
     whole_node : false, // to avoid checking the box just clicking the node 
 
     tie_selection : false // for checking without selecting and selecting without checking 
 
    }, 
 
    plugins: ['checkbox'] 
 
}) 
 
.on("check_node.jstree uncheck_node.jstree", function(e, data) { 
 
    alert(data.node.id + ' ' + data.node.text + 
 
     (data.node.state.checked ? ' CHECKED': ' NOT CHECKED')) 
 
})
<link href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" type="text/css" rel="stylesheet" /> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"></script> 
 
    <div id="Tree"></div>

+0

@LorenzoGrossi Ich habe ein – edc65

+0

Snippet Arbeits I heruntergeladen jstree 3.2.1, das Snippet ist genau das, was muss ich tun, aber es funktioniert nicht in meine Lösung ... in meiner Lösung es doesn füge den Haken nicht hinzu, wenn ich auf das Feld klicke, aber füge ihn hinzu, wenn ich die Zeile –

+0

@LorenzoGrossi anlege, überprüfe deine Erstellungsparameter. Besonders der Bereich "Checkbox". – edc65

Verwandte Themen