我向服务器发送一个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 键,我如何发送此 Ajax 调用。
多谢
您可以使用 订阅 from knockoutjs 来实现您正在寻找的功能。
相同的小演示
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"]' />