我正在使用primefaces的自动完成组件。现在这样做是你添加几个字符,它会相应地搜索名称。现在我遇到的麻烦是“输入”按钮(在键盘上)...因为我想让输入功能正常,即使您正在搜索自动完成功能,您仍然可以按下它并继续获得更大的列表。现在,这是通过一个按钮进入Webflow并重定向到另一个页面。
现在我遇到的麻烦是,如果自动完成开始搜索,它会启动Ajax请求,如果我在其中单击输入,则会启动另一个请求来执行重定向。但是这里有一个问题:第一个请求仍处于活动状态,如果在我的重定向完成之前它返回成功,它就会中止重定向,从而为我提供开始的页面。
现在最大的问题是:如何停止我一无所知的第一个请求? Blackbox明智的我不太了解这个请求,只是它很烦人。我不能通过JavaScript传递它,因为自动完成只有一个启动函数,它在请求之前加载,在完成之后在请求之后加载。
修改:以下是我需要了解的代码:
XHTML和JavaScript:
<p:autoComplete value="#{simpleSearchBean.searchString}" completeMethod="# {simpleSearchBean.completeUser}"
var="user" itemLabel="#{user}" itemValue="#{user}" forceSelection="false"
minQueryLength="3" maxResults="10" name="search_block_form" id="edit-search-block-form-1" size="30" queryDelay="500" style="float:left;">
<p:ajax event="itemSelect" oncomplete="autoClickSearchButton()" update="@all"/>
</p:autoComplete>
<p:commandButton action="simpleUserSearch" title="#{msgs_common['common.search']}" name="op" id="edit-submit" image="ui-icon ui-icon-search" style="float:left;"/>
<script type="text/javascript">
function autoClickSearchButton(){
jQuery('#search-block-form\\:edit-submit').click();
}
jQuery('#search-block-form\\:edit-search-block-form-1').keyup(function(event){
if(event.keyCode == 13){
jQuery('#search-block-form\\:edit-submit').click();
}
});
</script>
这是webflow的一部分:
<end-state id="simpleUserSearch" view="flowRedirect:user?searchString=#{simpleSearchBean.searchString}"/>
<global-transitions>
<transition on="simpleUserSearch" to="simpleUserSearch" validate="false"/>
</global-transitions>
答案 0 :(得分:0)
我有同样的问题解决这个问题的最佳方法是这样的:
var ajaxObject = $.ajax( {your code here} );
提交时请执行以下操作:
ajaxObject.abort();
这会停止运行ajax脚本。
答案 1 :(得分:0)
如果用户按下enter
,我认为你甚至不需要一个用于收听的功能...自动完成已经这样做...如果你想让search commandButton
重定向到另一个页面,只需设置ajax attribute to false
:
<p:commandButton ajax='false' action="simpleUserSearch" title="#{msgs_common['common.search']}" name="op" id="edit-submit" image="ui-icon ui-icon-search" style="float:left;"/>