繁体   English   中英

在一个表单上有多个jquery验证器

[英]multiple jquery validators on one form

我正在使用jquery.validate插件,并遇到以下情况:

<form id="myForm" ....>
    <input type="text" id="value1"/>

    <!-- Here is some code rendered from the partial -->
    <script type="text/javascript">
    $(document).ready(function() {
        var validator = $('#myForm').validate({
            rules: {
                value_from_partial: {
                    required: true
                }
            },
            messages: {
                value_from_partial: {
                    required: "Enter your firstname"
                }
            },
            submitHandler: function() {
                alert("submitted!");
            }
        });
    });
    </script>
    <input type="text" id="value_from_partial"/>
    <!-- End of code rendered from the partial -->
</form>
<script type="text/javascript">
    $(document).ready(function() {
        var validator = $('#myForm').validate({
            rules: {
                value1: {
                    required: true
                }
            },
            messages: {
                value1: {
                    required: "Enter your firstname"
                }
            },
            submitHandler: function() {
                alert("submitted!");
            }
        });
    });
</script>

部分验证中添加的验证无效。 当我从主html中删除.validate时,则部分验证有效。 看来jquery.validate不允许在同一表单上有两个.validate调用。 另一方面,我不能为验证器调用“添加”规则,因为我希望验证代码来自部分本身(实际上是一个插件)。 有什么办法可以将我的验证逻辑与部分验证包括在一起,并且可以使用jqury.validate代替手动验证。 还有其他验证框架可以允许这样做吗? 谢谢!

您是正确的,不能两次调用validate() 可以,但是这些选项第二次无效。

两种选择:

  1. 用HTML而不是JavaScript构建规则。 例如,将required类添加到输入中,而不是添加必需的规则。 验证器支持这一点。
  2. 有“部分”和“主”形式的部分建立一个选择对象 ,然后调用validate在一个ready的事件,通过这个对象,而不是调用validate两次。

如果要将大型表单分解成多个部分,那么为什么不将每个部分做成自己的表单呢? 每个部分完成后,您可以使用最终形式的隐藏输入来结转值,或者更好地分配会话变量。

在部分加载之前,您可以尝试使验证器成为全局变量。

var validator;

接下来,您将尝试在第二个document.ready块中解除对validate()的第一次调用的提交方法的绑定:

$('#myForm').unbind('submit');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM