2016-02-19 18 views
5

ho questo JsTreeJsTree casella di controllo - controllare evento

enter image description here

con questo codice:

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 
      } 
     }); 

ho bisogno di separare la selezione e l'azione di controllo, l'utente è tenuto a verificare tutti i nodi che vuole ma seleziona solo una riga per volta. per ora quando clicco ovunque sulla riga seleziona quella riga e controlla quel nodo, devo controllare la casella solo se l'utente fa clic su di esso.

provo tanta evento, ma l'unica che il lavoro è:

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

che catturano sia l'azione di selezione e di verifica.

Qualche suggerimento?

risposta

13

Questa risposta riguarda la versione 3 di jstree - questo è quello che dovresti usare nel 2016. Sfortunatamente il tuo codice di esempio, sembra utilizzare jstree rel 1, e non posso aiutarti.

Per diffusione 3

Prima di tutto, slegare il selezionato e gli stati controllati (checkbox.tie_selection: false) - vedi the docs

Quindi, utilizzare l'evento check_node.jstree

di lavoro esempio

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 ho aggiunto un gruppo di lavoro snippet – edc65

+0

ho scaricato jstree 3.2.1, lo snippet è esattamente quello che devo fare, ma non funziona nella mia soluzione ... nella mia soluzione doesn aggiungere il segno di spunta quando clicco sulla casella, ma aggiungilo quando seleziono la riga –

+0

@LorenzoGrossi esamina i parametri di creazione. In particolare la sezione 'checkbox'. – edc65

Problemi correlati