Как получить строку в выпадающем списке с помощью w2ui?

Я хочу выделить или ввести текст в поле со структурой w2ui. Когда я набираю клавишу "Enter", я получаю значение в выпадающем списке, чтобы поместить это значение в массив (см. Мою функцию addItem в моем коде). Я не знаю, как получить доступ к строке в поле со списком?

Документация для этого комбо находится здесь: http://w2ui.com/web/docs/1.5/form/fields-list

Я сделал jsfiddle о том, что я пытаюсь сделать здесь: https://jsfiddle.net/espace3d/bLughmy9/

Это для простого списка задач с тегом.

<!DOCTYPE html>
<html>
<head>
<title>W2UI Demo: fields-3</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script type="text/javascript" src="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://rawgit.com/vitmalina/w2ui/master/dist/w2ui.min.css" />
</head>
<body>

<div style="height: 10px"></div>
<div class="w2ui-field w2ui-span3">
    <label>Combo:</label>
    <div> <input type="combo"> <span class="legend">You can type any text</span> </div>
</div>
<div style="height: 20px"></div>
<style>
.w2ui-field input {
    width: 200px;
}
.w3ui-field > div > span {
    margin-left: 20px;
}
</style>

<script type="text/javascript">

var data={
description:["georges","henry"],
}

var addItem=function(item){
        console.log(item)
        data.description.push(item)
        data.description.sort();
}

$('input[type=combo]').w2field('combo', { 
items: data.description,
});

$( 'input[type=combo]' ).keypress(function(event) {
        if(event.key == 'Enter'){
        console.log( "Handler for .keypress() called." );
        /////////////////////////////////////////
        //WHAT I WANT TO DO
        //addItem(something)
        }
});
</script>
</body>
</html>

2 ответа

Вы можете получить доступ к объекту w2field, вызвав $element.w2field(),

После этого вы можете получить доступ к контенту, позвонив get() на объекте w2field.

Примечание: get() может вернуть объект, например, если ваши объекты являются объектами в форме { id: 123, text: "my text" }, который будет действителен для поля со списком w2ui или полей списка.

В вашем случае вы можете изменить код следующим образом:

$( 'input[type=combo]' ).keypress(function(event) {
        if(event.key == 'Enter'){
            console.log( "Handler for .keypress() called." );
            var w2ui_field = $(this).w2field();
            var value = w2ui_field.get();
            addItem(value);
            w2ui_field.options.items = data.description;
        }
});

Обратите внимание, что вам придется переназначить новые элементы для параметров w2field, если вы хотите отобразить их в поле со списком.

Если вы не хотите этого, вы можете опустить w2ui_field.options.items = data.description; часть.

Обновленная скрипка: https://jsfiddle.net/k548j0w1/

У меня была такая же проблема, как и у вас.

Чтобы решить мою проблему, я получил элемент списка объекта JSON и получил его идентификатор или текст в COMBOBOX следующим образом.

      $('#yourlistid').w2field().get().id
$('#yourlistid').w2field().get().text
Другие вопросы по тегам