Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 动态添加验证规则_Jquery_Validation_Jquery Validate - Fatal编程技术网

Jquery 动态添加验证规则

Jquery 动态添加验证规则,jquery,validation,jquery-validate,Jquery,Validation,Jquery Validate,我有一个插件,它一般处理用于CRUD操作的jQuery对话框的创建。添加到对话框中的表单标记在插件代码外部可用,插件只需请求http服务提供标记,收到标记后,只需将其添加到对话框本身 然后,我在插件中创建了一个回调(onSetupValidation函数),它是插件用户自定义每个表单验证的句柄。这是我正在使用的代码示例 var element = $('#mydiv'); element.crudplugin({ [...] onSetupValidation: function

我有一个插件,它一般处理用于CRUD操作的jQuery对话框的创建。添加到对话框中的表单标记在插件代码外部可用,插件只需请求http服务提供标记,收到标记后,只需将其添加到对话框本身

然后,我在插件中创建了一个回调(
onSetupValidation
函数),它是插件用户自定义每个表单验证的句柄。这是我正在使用的代码示例

var element = $('#mydiv');
element.crudplugin({
    [...]
    onSetupValidation: function(markup) {
        var form = $('#myForm', markup);
        var container = $('<div class="error"><p>Errors were found validating your form. Please correct them and retry.</p><ol></ol></div>')
                       .appendTo(form).hide();
        var validator = form.validate({
            errorContainer: container,
            errorLabelContainer: $('ol', container),
            errorElement: 'em',
            wrapper: 'li',
            highlight: function (element) {
                $(element).addClass("ui-state-error");
            },
            unhighlight: function (element) {
                $(element).removeClass("ui-state-error");
            },
            submitHandler: function (form) {
                [...]
            }
        });
    }
    [...]
});
但如果在执行指令时使用此方法,则会出现以下错误:

SCRIPT5007:无法获取属性“设置”的值:对象为 null或未定义的jquery.validate.min.js,第15行,字符257


有什么建议吗?

你肯定走对了方向

关键是,在将规则添加到表单中的各个字段之前,必须在表单上调用
validate

如果您想查看触发此案例的示例,可以签出(或者特别是)。在该JSFIDLE中,如果注释掉javascript的最后4行(
$('#myForm').validate({/*…*/});
),它将触发与您看到的相同的错误消息


您的问题也不清楚,但您可能在表单可见之前调用了
validate
?如果是这样的话,很有可能是没有帮助的

只是补充一下。如果你不介意使用丑陋的代码,你可以这样做

var your_new_object = $("#theForm").validate().settings;
your_new_object ... //do some stuff with it
$("#theForm").validate().setting = your_new_object;
其中,新对象是原始设置对象的更新版本


正如我所说的,这是一种丑陋的方法,但如果没有其他办法奏效,请尝试一下

谢谢你的回答。在对话框创建期间和窗体显示之前调用回调。在回调中,我首先调用validate(),然后添加规则。我将尝试在show()方法之后移动回调函数……这将确保这一点——如果这是一个jQuery对话框,
open
事件将是一个合适的位置。
var your_new_object = $("#theForm").validate().settings;
your_new_object ... //do some stuff with it
$("#theForm").validate().setting = your_new_object;