我向服务器发送一个AJAX请求,其中包含我想要的服务器页码。
我使用输入框从用户那里获得此页码。
我使用此代码:
(function($) {
$(function() {
// Overall viewmodel for this screen, along with initial state
function CartableViewModel(totalItems) {
var self = this;
// Editable data
self.data = ko.observable();
self.pageIndex = ko.observable(1).extend({
rateLimit: {
method: "notifyWhenChangesStop",
timeout: 1500
}
});
ko.computed(function() {
Mostafa.myApp.Order.Cartable("CreatorID=23 & (CreatorID=23|CreatorID>23)", self.pageSize(), function(data) {
self.data(data);
});
});
});
}
Mostafa.myApp.Order.CartableViewModel = new CartableViewModel();
ko.applyBindings(Mostafa.myApp.Order.CartableViewModel);
});
$("#form_page_select").on("submit", function() {
return false;
});
})(jQuery);
我的HTML是:
<form id="form_page_select">
<input type="number" id="input_page_select" min="1" data-bind='value: pageIndex, valueUpdate: ["input", "keypress"]' />
</form>
实际上我用另一个java脚本方法发送这个AJAX请求,它的名字是“Mostafa.myApp.Order.Cartable()”,它运行正常。
我的问题是:如何在超时后发送此Ajax调用,但是如果用户在此输入字段上按Enter键。
非常感谢,
答案 0 :(得分:2)
您可以使用来自knockoutjs的subscribe来查找您正在寻找的功能。
相同的小演示
function model(){
var self = this;
self.pageIndex = ko.observable(5).extend({ rateLimit: 1500 });
self.pageIndex.subscribe(function(newValue) {
alert(newValue);
//Call here your ajax call
//Subscribe will be called on every change of your PageIndex
});
};
var mod = new model();
ko.applyBindings(mod);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>
<input type="number" id="input_page_select" min="1" data-bind='value: pageIndex, valueUpdate: ["input", "keypress"]' />