Knockout js valueupdate 'afterkeydown' 事件更改不起作用
knockout js valueupdate 'afterkeydown' with event change not working
我在用于计算产品定价的表单上使用 Knockout JS。
我有一个在表单提交时调用并计算定价的函数。对于文本输入字段,我希望在用户开始更改值时立即调用定价函数。目前这只有在我点击文本输入字段之外时才有效,所以不会立即点击 keypress/keyup,这是我想要实现的。
我很确定我的代码中有一些地方需要修复。
HTML 对于输入字段:
<div class="form-group">
<label>Number of Pages</label>
<input data-bind="value : pages, valueUpdate: ['afterkeydown'], event: { change: onSubmit }" >
</div>
Javascript:
self.pages = ko.observable("10");
self.onSubmit = function () {
self.response("<div class='priceLoading'>Loading</div>");
var servURL = "http://prices.mysite.com/getpricing/"
+ ko.utils.unwrapObservable(self.selectedCategoryValue) + "/"
+ self.pages() + "/"
+ self.copies()
$.get(servURL, function (response) {
self.response(response.PriceFormatted);
})
}
在事件更改时调用的 onSubmit 函数从服务中获取数据 xml 数据并将其写入表单。
非常感谢任何帮助!
您可以使用
<input data-bind="textInput : pages, event: { keyup: onSubmit }" >
如果您想提交对变量的每次更改,将您的 onsubmit 函数订阅到变量而不是单独的事件,这更有意义。
var self = {};
self.pages = ko.observable("10");
self.response = ko.observable();
self.copies = ko.observable("5");
self.pages.subscribe(function(newValue) {
self.response("<div class='priceLoading'>Loading</div>");
var servURL = "http://prices.mysite.com/getpricing/" + ko.utils.unwrapObservable(self.selectedCategoryValue) + "/" + self.pages() + "/" + self.copies()
setTimeout(function() {
self.response("Fetched for " + newValue);
}, 500);
});
ko.applyBindings(self);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div class="form-group">
<label>Number of Pages</label>
<input data-bind="value : pages, valueUpdate:'afterkeydown'">
<div data-bind="text:response"></div>
</div>
我在用于计算产品定价的表单上使用 Knockout JS。
我有一个在表单提交时调用并计算定价的函数。对于文本输入字段,我希望在用户开始更改值时立即调用定价函数。目前这只有在我点击文本输入字段之外时才有效,所以不会立即点击 keypress/keyup,这是我想要实现的。
我很确定我的代码中有一些地方需要修复。
HTML 对于输入字段:
<div class="form-group">
<label>Number of Pages</label>
<input data-bind="value : pages, valueUpdate: ['afterkeydown'], event: { change: onSubmit }" >
</div>
Javascript:
self.pages = ko.observable("10");
self.onSubmit = function () {
self.response("<div class='priceLoading'>Loading</div>");
var servURL = "http://prices.mysite.com/getpricing/"
+ ko.utils.unwrapObservable(self.selectedCategoryValue) + "/"
+ self.pages() + "/"
+ self.copies()
$.get(servURL, function (response) {
self.response(response.PriceFormatted);
})
}
在事件更改时调用的 onSubmit 函数从服务中获取数据 xml 数据并将其写入表单。
非常感谢任何帮助!
您可以使用
<input data-bind="textInput : pages, event: { keyup: onSubmit }" >
如果您想提交对变量的每次更改,将您的 onsubmit 函数订阅到变量而不是单独的事件,这更有意义。
var self = {};
self.pages = ko.observable("10");
self.response = ko.observable();
self.copies = ko.observable("5");
self.pages.subscribe(function(newValue) {
self.response("<div class='priceLoading'>Loading</div>");
var servURL = "http://prices.mysite.com/getpricing/" + ko.utils.unwrapObservable(self.selectedCategoryValue) + "/" + self.pages() + "/" + self.copies()
setTimeout(function() {
self.response("Fetched for " + newValue);
}, 500);
});
ko.applyBindings(self);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div class="form-group">
<label>Number of Pages</label>
<input data-bind="value : pages, valueUpdate:'afterkeydown'">
<div data-bind="text:response"></div>
</div>