用javascript命令重新渲染字段

问题描述

| 我有2个字段。一个是带有位置列表的h:selectOneMenu。另一个是h:inputText。 我要尝试做的是,如果用户在selectOneMenu上选择位置,然后单击搜索,它将搜索该位置。如果他在selectOneMenu上选择了一个位置,但仍在inputText上键入了其他位置并单击了搜索,它将搜索所写的位置而不是所选位置。 因此,如果用户在输入文本上键入任何内容,将会很棒,它将禁用selectOneMenu,如果他清除了该字段,则会再次启用它。我在事件上尝试使用javascript   onchange = \“ if(this.value!= \'\')   document.getElementById(\'placeSelectOneMenu \')。disabled = \'true \'\“ 但这没用。我能做什么?有任何想法吗? 仅当我单击搜索时,它才起作用,然后正确地重新渲染该字段。我想要的是动态重新渲染。     

解决方法

        元素ID必须是生成的HTML元素ID的ID,而不是JSF组件ID。 JavaScript完全没有服务器端JSF代码的概念。它所看到和访问的只是JSF生成的HTML DOM树。在浏览器中打开页面,右键单击它,然后选择“查看源代码”。生成的
<h:selectOneMenu id=\"placeSelectOneMenu\">
的HTML应该如下所示
<select id=\"someFormId:placeSelectOneMenu\">
(其中
someFormId
是父级
<h:form>
的ID) 在这种情况下,您需要按以下方式获取它
document.getElementById(\'someFormId:placeSelectOneMenu\')
但是由于更改客户端的HTML输入元素而不通知服务器端的JSF会导致意外的行为(如果您通过纯JS在客户端启用它,那么就不会在服务器端神奇地启用它以及JSF不会处理最初被禁用的字段的提交值)并且您正在使用RichFaces,我建议您使用纯JSF方法,例如RichFaces 3.x
<a4j:support>
标签。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...