1

我一直在尝试使用带有 jsf 构建的表单的 jQuery 验证插件进行客户端验证。出于显而易见的原因,我基本上需要客户端验证来帮助减少服务器和浏览器之间的请求/响应往返次数。我知道 jsf“h:commandlink”标签不像普通的提交按钮,就像“h:commandButton”一样,我已经使用下面的代码成功地使用了 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 和 jsf h:commandLink 一起正常工作。谢谢

4

2 回答 2

0

true如果表格有效,只需返回。您甚至可以直接委派valid()职能。

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

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

于 2012-09-06T11:50:14.413 回答
-1
<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 文件中使用它时,脚本无法正常工作.......................... .............................如果标签具有“类型”属性,它应该等于“text/javascript”或“application/javascript”。脚本也必须是可解析的(语法正确)。

于 2014-08-23T08:51:03.150 回答