Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript f:onchange事件的ajax_Javascript_Ajax_Jsf - Fatal编程技术网

Javascript f:onchange事件的ajax

Javascript f:onchange事件的ajax,javascript,ajax,jsf,Javascript,Ajax,Jsf,我有一个特殊的问题:我需要通过客户端onchange事件向服务器发送一个值,而不提交整个表单。有什么特色吗 我可以通过Javascript处理该组件: <h:inputText onchange= ...js... > 我可以通过ajax发送一个值: <f:ajax execute="name"/> 如何组合 问题解决了,但我还有一个问题: 什么处理得更快?事件的Ajax处理还是JavaScript处理?很简单,Ajax是为页面上发生的部分提交/更新而设计的

我有一个特殊的问题:我需要通过客户端onchange事件向服务器发送一个值,而不提交整个表单。有什么特色吗

我可以通过Javascript处理该组件:

<h:inputText onchange= ...js... >

我可以通过ajax发送一个值:

<f:ajax execute="name"/>

如何组合


问题解决了,但我还有一个问题:


什么处理得更快?事件的Ajax处理还是JavaScript处理?

很简单,Ajax是为页面上发生的部分提交/更新而设计的。您只需指定标记的
事件
属性,并根据需要将其设置为
更改
。根据部分表单提交,在标签的
execute
属性中指定要在服务器上更新的组件ID。但是由于
execute
的默认值正好是
@this
(触发事件的组件),您可以完全忽略它。像这样:

<h:inputText id="text" value="#{bean.text}">
    <f:ajax event="change"/>
</h:inputText>

这样,在JavaScript更改事件发生后,您的bean模型将通过AJAX在幕后更新

第一个问题是,触发向服务器发送AJAX请求的是JavaScript事件,因此,自然,后者首先发生。此外,您还可以通过指定
onevent
属性,在成功提交AJAX响应时附加客户端回调以获得JavaScript的钩子。

我的代码:

<h:inputText id="appleNO" value="#{xxxModel.appleNO}" size="3" maxlength="3">
  <f:ajax event="blur" execute="@form" listener="#{xxxController.xxxAction()}" render="appleNO"/>
</h:inputText>


当textbox丢失foucs(onblur)时,将触发xxx操作。

是的,您可以使用ajax(这就是引入ajax的原因)向服务器提交特定数据。您可以使用Jquery的ajax调用。Ref:也许这是一个解决方案:(listener属性和实现handleEvent(AjaxBehaviorEvent事件)方法)。我想主要在服务器端解决它。我还可以使用一个事件属性:ok,这将帮助您通过jsf标准进行ajax调用。我说的是纯javascript库(jQuery)。很抱歉,如果是jQuery方式,那么我可以帮助您,而不是jsf。无论如何,谢谢,如果我发现jsf标准不起作用,我将使用您的解决方案:-)。但是如果我将js onchange事件处理程序添加到您的h:inputText中-首先处理什么?我指的是Javascript。当然,处理程序将首先执行。此外,您可以从
onchange
处理程序返回
false
,以停止发送AJAX请求。