取消JSF ajax调用
发布时间:2020-12-16 02:49:18 所属栏目:百科 来源:网络整理
导读:我在h:inputText标记内有一个f:ajax标记,对keyup事件进行ajax调用: h:inputText id="searchinput" value="#{tvShowForm.name}" f:ajax event="keyup" render="results" listener="#{tvShowForm.search}" //h:inputText 每次调用都需要足够的时间,用户在第
我在h:inputText标记内有一个f:ajax标记,对keyup事件进行ajax调用:
<h:inputText id="searchinput" value="#{tvShowForm.name}"> <f:ajax event="keyup" render="results" listener="#{tvShowForm.search}" /> </h:inputText> 每次调用都需要足够的时间,用户在第一次调用完成之前键入了多个字符. 有没有办法取消当前的ajax调用(以及排队的调用),以便最后一个keyup事件立即执行ajax调用? 解决方法
听起来你想要合并事件,例如这将等待
在发出ajax请求之前半秒钟,以及输入的任何输入 积分将包括在内.但是你不会为每个角色发出一个ajax请求 类型. <h:inputText onkeyup="keyupHandler();"/> ... <script> var keystrokeTimeout; keyupHandler = function(event) { var minChars = 4; var len = $(this).val().length; if((len != 0) && (len < minChars)) { return; } var ajaxRequest = function() { jsf.ajax.request('results',null,{ execute: 'results',render: 'results' }); } clearTimeout(keystrokeTimeout); keystrokeTimeout = setTimeout(ajaxRequest,500); // millisecs } </script> 这远远不像你想做的那样吗? 编辑:另一个建议是你看看Richfaces 4 a4j:队列功能. 我很感激,如果您还没有使用这个库,那么这不是一个小步骤. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |