如何解决用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>
标签。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。