需要将jQuery验证插件与jsf集成



我一直在尝试使用jQuery验证插件和用jsf构建的表单进行客户端验证。出于显而易见的原因,我基本上需要客户端验证来帮助减少服务器和浏览器之间的请求/响应往返次数。我知道jsf"h:commandlink"标签不像一个常规的提交按钮,就像我已经成功使用的"h:ccommandButton"JQuery表单验证,代码如下:

    <script type = "text/javascript">
        $(document).ready(function(){
            $("#form").validate({
                rules: {
                    "form:staffno": {
                        required: true

                    }        
                }
            });

        });
    </script>
                    <h:body>
                    <h:form id="form">
                    <h:inputText id="staffno"  value="#" required="true"/>
                    <h:commandButton id="save" value="SAVE" action="#"/> //renders a html submit button type
                    </h:form>
                    </body>

我从页面来源注意到h:commandLink使用了某种javascript函数,所以我尝试调整上面的内容以获得如下所示的效果:

                  <script type="text/javascript">
                    $(document).ready(function(){
                        $("#form").validate({
                            rules: {
                                "form:staffno": {
                                    required: true

                                }        
                            }
                        });
                        $("#form\:save").click(function(){ 
                            if($("#form").valid()){
                               //cannot use regular $("#form").submitt()
                               // really can't figure what to use here
                            }
                            else{
                                return false;
                            }
                        });       

                    });  
                </script>

在我疯狂的调整中,我能够获得JQuery验证插件的行为,但只是很短的一段时间,因为即使字段为空,表单仍然会被提交。我有点想调用两个onclick,一个在jquery中,另一个在在jsf中。我仍然不知道如何把它做好。我将需要帮助,使这个客户端验证与JQuery和jsfh:commandLink正确工作。感谢

如果表单有效,只需返回true。您甚至可以直接委托给valid()函数。

$("#form\:save").click(function(){ 
    return $("#form").valid();
});

您确实可以不使用$("#form").submit(),因为这样一来,命令按钮的HTML <input type="submit">表示的名称=值对就不会作为请求参数发送,因此JSF将无法识别需要调用的命令按钮操作。

<script type="text/javascript">
$(document).ready(function(){
   $("#form").validate({
      rules: {
         "form:staffno": {
            required: true
         }        
      }
   });
   $("#form\:save").click(function(){ 
      return $("#form").valid();
   });
</script>
<body>
   <h:form id="form">
   <h:inputText id="staffno"  value="#" required="true"/>
   <!-- renders a html submit button type -->
   <h:commandButton id="save" value="SAVE" action="#"/> 
   </h:form>
</body>

当我在.xhtml文件中使用脚本时,它无法正常工作。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。如果标记具有"type"属性,则应等于"text/javascript"或"application/javascript"。此外,脚本必须是可解析的(语法正确)。

最新更新