目前,我正在使用 ajax 回发将数据传递到我的 Controller ,我从那里开始施展魔法。我现在遇到的问题是,我们删除了提交按钮,而是使用 .keyup()
附加了一个处理程序,在较小的数据库上,这效果很好!然而,当将其移动到更大的数据库时,正如您可能猜到的那样,它会导致各种问题,从延迟响应到崩溃等。所以它不起作用。我对堆栈溢出的问题是这样的:提交表单的用户友好版本是什么?
由于前端用户可能会搜索单个字符值(例如 userid 6 中的 6),因此我无法将其限制为最小字符提交。我们不需要延迟计时器,因为这可能会以多种不同的方式产生适得其反的效果。所以基本上我已经排除了 .delay()
、.blur()
和 .keyup()
。
最佳答案
如果您的要求是不使用提交按钮,而是在用户键入时处理输入,那么我过去曾使用过类似的解决方案。
首先定义一个函数来管理延迟,如下所示:
var inputDelay = (function () {
var timer = 0;
return function (callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
然后,对于实际的 ajax 调用,在 onkeyup 事件中执行类似以下操作:
inputDelay(function () {
//AJAX-call goes here
}, 400)
请注意,这并不是处理服务器响应顺序的通用解决方案。您很可能会收到发送到服务器的多个 AJAX 请求,并且此代码不会执行任何操作来确保您只处理最新的调用。
关于javascript - 使用 jQuery 提交按钮的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207544/