2016-08-26 4 views
0

Я пытаюсь найти способ передать выбор из JSTree в базовую HTML-форму. (Который затем используется Flask & Wtforms). Мне удалось передать его в консольный журнал, но я не уверен, как вернуть его в форму.Заполнение текстового поля от выбора JsTree

Относительно новый для JS, так что успокойтесь, но я не понимаю, как это сделать.

<label for="folderpath">Folder Path:</label> 
<input type="text" id="folderpath" name="folderpath" value=""> 
<br> 
<div id="container"></div> 

<script id="jstree1" name="jstree1"> 

    $('#container').jstree({ 

    'core': { 
     "themes": { 
       "name": "default", 
       "dots": true, 
       "icons": true 

      },   
     'data': { 
        'url': "static/JSONData.json", 
        'type': 'GET', 
        'dataType': 'JSON', 
       } 
       } 
      });var folderpath = 
     $('#container').on("changed.jstree", function (e, data) { 
     console.log(data.instance.get_selected(true)[0].text); 
}); 
</script> 

EDIT Я попытался с помощью #folderout. Но это не сработает при использовании тега input type = "text".

<label for="folderout">Folder Path</label> 
    <input type="text" name="folderout" class="form-control" id="folderout" > 

     $("#container").on("select_node.jstree", function (evt, data) { 
     var number = data.node.text 
     $('#folderout').html(number); 
+0

Попробуйте это, $ ('# container'). On ("changed.jstree", функция (e, data) { callback (data.instance.get_selected (true)); }); «changed.jstree» - это имя события, а функция - сценарий, который должен быть выполнен в случае, если это событие запущено, поэтому вам нужно вызвать обратный вызов в вашей функции с параметром «data.instance.get_selected (true)», возвращая все выбранные в данный момент элементы – AbhilashK

+0

Спасибо AbhilashK, но мне нужно передать значение clicked в текст типа ввода HTML. Как мне это сделать? – Infinity8

+0

См. Мое редактирование. Я попытался сделать это с тегом «folderout», но он не будет заполняться. – Infinity8

ответ

1
<label for="folderout">Folder Path</label> 
<input type="text" name="folderout" class="form-control" id="folderout" > 

<script id="jstree1" name="jstree1"> 

           $('#container').jstree({ 
            'core': { 
             "themes": { 
              "name": "default" 
              , "dots": true 
              , "icons": true 
             } 
             , 'data': { 
              'url': "static/JSONData.json" 
              , 'type': 'GET' 
              , 'dataType': 'JSON' 
             } 
            } 
          }); 
{ /* --- THIS IS FOLDER SELECTOR FOR ID "folderout" --- */ 
$("#container").on("select_node.jstree", function (evt, data) { 
var number = data.node.text 
document.getElementById("folderout").value = number; });}; 
</script> 

Последняя часть здесь сделал трюк. Преобразование data.node.text в переменную. Затем приведение переменной в html с помощью getElementById. Теперь, щелкнув узел, он заполнит это текстовое поле.

+0

Почему код (добавление редактирования) не работал раньше, потому что вы использовали html для ввода. Для входных тегов (и selects) требуется использовать значение, например $ ('# folderout'). Val (number). Для других тегов (например, p, div, span и т. Д.) Требуется текст через html. – AbhilashK

Смежные вопросы