Я пытаюсь включить функцию поиска, когда пользователь нажимает кнопку ввода с помощью нокаута , но когда я нажимаю войти в текстовом поле, нокаут не связывает значение из textbox
Нокаут нажатие клавиши не связывается при нажатии ввода
<!DOCTYPE html>
<html>
<head>
<title>Knockout</title>
<meta charset="utf-8" />
</head>
<body>
<div id="view">
<input type="text" placeholder="Press enter to bind" data-bind="value:textboxValue" data-function="pressEnterToBind"/>
</div>
</body>
</html>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="http://knockoutjs.com/downloads/knockout-3.4.1.js"></script>
<script>
$(document).ready(function() {
window.vm = (function ($, ko) {
var $view = $("#view");
var textboxValue = ko.observable();
var onPressEnter = function (e) {
if (e.which === 13) {
alert(textboxValue());
}
},
init = function() {
$view.on('keypress', '[data-function="pressEnterToBind"]', onPressEnter);
};
init();
return {
textboxValue: textboxValue
};
}($, ko));
window.vm.binding = (function (ko, vm) {
ko.applyBindings(vm);
})(ko, window.vm);
});
</script>
Результатов для оповещения является «неопределенным»
Вместо нажатия клавиши вы пытались работать с keydown? Вот как я поймаю непечатаемые ключи, такие как enter, backspace, tab и т. Д. – Bindrid
Да, но результаты одинаковы –
Я думаю, что ваш код сложнее, чем нужно. Например, почему вы не привязываете элемент управления сразу после создания представления? BTW, textInput лучше привязывать текстовые поля, чем значение. Или, если вы действительно хотите захватить ключевые штрихи, создайте свою собственную привязку. – Bindrid