我正在尝试在用户使用knockout输入时启用搜索功能
但是当我在文本框中输入时,淘汰不会绑定来自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>
警报的结果未定义&#39;
答案 0 :(得分:0)
我通过两种方式达到目标
首先:将“valueUpdate:'afterkeydown'”添加到敲除绑定
<input type="text" placeholder="Press enter to bind" data-bind="value:textboxValue,valueUpdate: 'afterkeydown'" data-function="pressEnterToBind"/>
OR
第二:“模糊()”和“焦点()”再次在目标控制上
var onPressEnter = function (e) {
if (e.which === 13) {
$(e.target).blur(); // to refresh ko binding
alert(textboxValue());
$(e.target).focus(); // to refresh ko binding
}
},
答案 1 :(得分:0)
textInput绑定可以解决问题。
KnockoutJS文档:
与值绑定不同,textInput为DOM提供所有类型用户输入的即时更新,包括自动完成,拖放和剪贴板事件。