一,
jsf中使用js获得输入项值的注意事项:
如果你在jsf的form标签
<h:form>中,使用了普通的<input id="username" type="text">输入框,那么你在js里面获得输入框的值的时候应该写
document.getElementById("userName").value
如果是 <h:inputText id="username" value="......">
那么在js里面有两种情况获得输入框的值,
如果想直接写:document.getElementById("userName").value,那么应该先写:
<h:form prependId="false">
或者写:<h:form id="aaaForm" >不变,js里面写
document.getElementById("aaaForm:userName").value
注意 这种方法对于输入控件是有效的。如果是outputText这种方法是不行的。
二, 获取outputText中的值
userUnitName=document.getElementById("form1:userUnit").innerHTML;(因为outputText里面的内容是在标签内输出的,不能算作value属性)。
三,获取inputText控件值(转载的 试验了一下 没有成功)
因为在jsf中使用控件标签 和html中使用的略有不同,所以在jsf用使用js不是很方便!
但是jsf网页代码在客服端显示出来的代码还是纯html ,jsp ,js代码。(在客服端浏览器右键“查看源代码”即可)
- <webuijsf:textField
- onChange="validateEmail();"
- binding="#{UserRegisteration.textField2_Email}"
- id="textField2_Email"
- required="false"
- style=" position: relative z-index: 501"/>
最终的js获取email的值的代码;
- function validateEmail(){
- var text = document.forms['form1'].elements[1].value;
- alert(text);
- }
本想通过js获取jsf中textfield 控件的value值,再查询数据库,用来验证用户名是否可用。
一开始觉得有点不可能。因为jsf中textfield控件的值是通过textfield的text属性来设定的。而js中是通过value来获取的。有点失望。
后来在刘成同学的引导下,通过浏览器看到了网页的源代码:1.只有一个form 对象。名为“form1”
2.第一个input 的id为form1:textField2_Email(说明下,这个 textField2_Email 是jsf中输入email的一个textfield控件的id);但是在js中通过如下可以得到DOM对象;
- var inputEmail = document.getElementById(form1:textField2_Email);
- alert(inputEmail);
- alert(inputEmail.vaue);
分别 输出如下:[object HTMLElement] ;undefined
本来想通过这段代码得到id 为textField2_Email的对象及其value;
不知道这个object指的是什么。。郁闷很长一段时间;
- var text = document.forms['form1'].elements[0];
- alert(text);
发现客服端只有一个form1 ;所以想到用上面的这段代码试了下,输出如下:
[object HTMLInputElement]
看到一点希望,至少得到了input对象了。
- var text = document.forms['form1'].elements[0].value;
- alert(text);
这样就输出你刚才输入的值,到此,在jsf中通过js得到jsf中控件的text属性值的目的达到
引用网址:http://hyvi.iteye.com/blog/380479