Ayuda con JqTree

25 views
Skip to first unread message

Wilmer

unread,
Aug 7, 2013, 12:49:45 PM8/7/13
to jquer...@googlegroups.com
Hola:

Mi arbol me ha quedado bien, pero quisiera poder personalizar el menu contextual, es decir solo dejar el create y rename, adicionalmente quisiera que al pulsar create pueda enviarme a otra página el cual se encargue de guardar en la base de datos llevando el id del padre del cual dependerá.

Gracias

oyepez003

unread,
Aug 7, 2013, 2:39:08 PM8/7/13
to jquer...@googlegroups.com
Hola puedes hacerlo asi:


$tree->enableContextMenu();

$tree->setContextMenuItems(
array(
    "remove" => array('_class' => 'hidden_node'),
    "ccp" => array('_class' => 'hidden_node'),
    "rename" => array(
        "label" => "Renombrar",
        "action" => new YsJsFunction("alert(JSON.stringify('Renombrar ' + obj.attr('node-id')))","obj")),
    "create" => array(
        "label" => "Crear",
        "action" => new YsJsFunction("alert(JSON.stringify('Crear ' + obj.attr('node-id')))","obj"))
));
?>

Esto muestra un alert con el id cuando sleccionas la opcion Crear o Renombrar... ya queda de tu parte llamar a la funcion que envie al servidor los datos para que lo guarde en la BD.

Por ultimo para ocultar las opciones opciones "remove" y "edit" Debes crear un estilo asi:

<style>
    .hidden_node{
        display:none !important;
    }
</style>

Que fue el que se coloco en la opcion "_class" de los items del contextmenu que no se querian mostrar.

Saludos cordiales.

oyepez003

unread,
Aug 7, 2013, 2:51:06 PM8/7/13
to jquer...@googlegroups.com
Disculpa el JSON.stringify esta demas....

Puedes colcoar directamente:

alert('Renombrar ' + obj.attr('node-id'))


Saludos.

Wilmer

unread,
Aug 7, 2013, 3:02:33 PM8/7/13
to jquer...@googlegroups.com
Super:

Pero pensaba enviar a la base de datos además del id el nombre que inserte para el nuevo componente creado, entonces el alert debería usarlo al clickar fuera del componente o al pulsar enter. axiste alguna manera?

oyepez003

unread,
Aug 7, 2013, 4:09:45 PM8/7/13
to jquer...@googlegroups.com
Puedes hacerlo con el evento blur del input, asi:

<script type="text/javascript">

$('.jstree-rename-input').live('blur', function(){
    alert($(this).val());
});

</script>

Saludos:

Wilmer

unread,
Aug 7, 2013, 4:45:02 PM8/7/13
to jquer...@googlegroups.com
En realidad lo que intento es obtener el id el nombre, y con el evento blur lo obtengo, sin embargo requiero tambien el id del nodo padre intenté modificar algo asi pero simplemente no pasa nada


                "create" => array(
                        "label" => "Crear",
                        "action" => new YsJsFunction("
                                $('.jstree-rename-input').live('blur', function(){
                                    alert($(this).val() + obj.attr('node-id'))
                                });","obj"))

Reply all
Reply to author
Forward
0 new messages