Как получить строку в выпадающем списке с помощью 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