我试图启用搜索功能时,用户按回车使用敲除,但当我按回车在文本框,敲除不绑定从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>警报的结果是“未定义”
发布于 2016-11-18 18:14:06
我通过两种方式达到了我的目标
首先:在敲除绑定中添加"valueUpdate:'afterkeydown'“
<input type="text" placeholder="Press enter to bind" data-bind="value:textboxValue,valueUpdate: 'afterkeydown'" data-function="pressEnterToBind"/> 或
第二:“模糊()”和“焦点()”再次出现在目标控制上。
var onPressEnter = function (e) {
if (e.which === 13) {
$(e.target).blur(); // to refresh ko binding
alert(textboxValue());
$(e.target).focus(); // to refresh ko binding
}
},发布于 2016-11-21 14:41:22
textInput绑定可以解决这一问题。
KnockoutJS文档:
与值绑定不同,textInput为所有类型的用户输入提供了DOM的即时更新,包括自动完成、拖放和剪贴板事件。
https://stackoverflow.com/questions/40683435
复制相似问题