请教一段JSF代码如下:
<h:form id="form1">
    <h:inputText id="name"/>
    <h:commandButton id="sub" value="subbmit"/>
...................................另外一段JQuery代码如下:
$(document).ready(function(){
    var userNameNode = $('#form1:name'); ------1
    alert(userNameNode.val());
......
    $("form1:sub").click(function (){ ----------2
         alert("SSSS");
...........但是我用fireBug跟了一下发现,在代码1处根本没有获得这个节点,后台显示是NULL,在代码2处也根本没有跳入到click事件中。向高手求教,谢谢

解决方案 »

  1.   

    试过,仍然不行,用alert("form1"); 能显示出是 HTML element,但是如果用alert("#form1")就是NULL
      

  2.   

    看下生成的html代码是怎么写的,form里是id还是name属性,name的话 #("form[name='form1']")
      

  3.   

    写错了,name的话是  $("form[name='form1']")
      

  4.   

    <form action="javascript:;" class="iceFrm" enctype="application/x-www-form-urlencoded" id="verify" method="post" onsubmit="return false;">
      

  5.   

    说明一下~提问的时候我改了一下Id用的是form1,实际上我写的id是verify~
      

  6.   

    用这个的话,firebug返回的是NULL,用$("verify")却能返回[object HtmlFormElement]
      

  7.   

    测试代码,可以的<script src="js/jquery-1.3.2.js" type="text/javascript"> </script>
    <script> 
    window.onload=function(){
       alert($("#verify").attr("method"))
    }
    </script>
    <form action="javascript:;" class="iceFrm" enctype="application/x-www-form-urlencoded" id="verify" method="post" onsubmit="return false;"> 
    </form>
      

  8.   

    难道我人品有问题~~
    我用HTML实验也确实没有问题~但是JSF的页面就有问题
      

  9.   

    jsf生成的表单元素的id,是formID:realID的形式,如果是在列表中,如dataTable之类的,还会有rowIndex在中间而jquery的选择器中,“:”是有用处的,比如$("input:checkbox"),是指复选框所以显然用jsf生成的id直接应用id选择器是不行的,最简单的方法就是定义一个跟realID一样的styleClass,然后用$(".className")来取,或者可以用$("input[id*='readID']")的形式原因就在于jsf生成的id不是简单的填入的id,而连接符正好在jquery中有定义或者最最简单,最最直接的方法,就是用apache的tomahawk标签库,比如t:inputText,可以定义一个属性叫做forceId,设置为true的时候,就不会输出formID,而是直接输出realID,这样就可以直接用$("#realID")了
      

  10.   

    “JSF的ID生成策略:容器组件ID:组件ID
    例如:如果有表单form1中有组件test1,则组件的真实ID为:"form1:test1",
    用DOM来选择这个组件document.getElementById('form1:test1')
    而用jquery的选择器则应该是$('#form1\\:test1')” 
    使用\\两个斜杠是为了转义特殊字符:,jquery的官方文档上面说明了需要用双斜杠转义特殊字符