首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Jquery验证-向输入元素添加规则时出错?

Jquery验证-向输入元素添加规则时出错?
EN

Stack Overflow用户
提问于 2012-05-18 18:52:31
回答 4查看 21.7K关注 0票数 19

我正在尝试用http://docs.jquery.com/Plugins/Validation实现Jquery验证:

我的设计计划:

  • My input element:
  • Then,on dom ready:

$(document).ready(function() { $('.val-req').rules('add',{required:true});});

  • Validate方法:

function validate_form(form_id,callback) { var form = $('#'+form_id);$('.val-req').each(function() {$(this).rules('add',{required:true});});$(form).validate({ errorElement:"span",errorClass:“val-.validate”,validClass:"val-valid",errorPlacement: function(error,element) {function(error,element){function},submitHandler:回调});}

根据我的预期,它应该在表单的占位符范围中显示错误消息。

但是,Problem

Chrome-Console上出现

设置错误:未捕获设置:无法读取未定义的属性‘

它在其他浏览器上也会出现错误。然后,我试图找出问题所在,并发现:

代码语言:javascript
复制
 $('.val-req').rules('add', {required:true});   # This is causing the error

因为,根据我的理解和文档->,这应该是正确的。

为什么这会导致TypeError,我可以做些什么来解决它?

EN

回答 4

Stack Overflow用户

发布于 2013-04-10 19:52:10

在表单元素中调用验证插件后,必须添加规则:

代码语言:javascript
复制
$("form").validate()
$(yourElement).rules("add", {...})
票数 18
EN

Stack Overflow用户

发布于 2012-05-20 01:53:32

我认为你的代码比它需要的更复杂。您应该只需要在document ready上调用validate (假设您的表单存在于document ready上):

代码语言:javascript
复制
$(document).ready(function() {
    $(".val-req").addClass("required");
    $("#form_id").validate({
        errorElement: "span",
        errorClass: "val-error",
        validClass: "val-valid",
        errorPlacement: function(error, element) {
            $('#val-msg.' + $(element).attr('id')).html(error.html());
        },
        submitHandler: function () {
            this.submit();
        }
    });
});​

示例: http://jsfiddle.net/4vDGM/

您也可以只向所需的元素添加一类required,而不是通过JavaScript添加它们。

您可以做的另一件事是在validate的选项的rules对象中添加规则:

代码语言:javascript
复制
$(document).ready(function() {
    $("#form_id").validate({
        rules: {
            myval: "required"
        },
        errorElement: "span",
        errorClass: "val-error",
        validClass: "val-valid",
        errorPlacement: function(error, element) {
            $('#val-msg.' + $(element).attr('id')).html(error.html());
        },
        submitHandler: function () {
            this.submit();
        }
    });
});​

示例: http://jsfiddle.net/GsXnJ/

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 17:48:54

我试图修改已经设置了验证的表单上的规则,但我找到了我的$(.ready)文档(...)在设置主窗体验证之前,代码就已经在执行了,所以添加一个简短的setTimeout就解决了这个问题。

代码语言:javascript
复制
setTimeout(function() {
    $(yourElement).rules("add", {...})
}, 100);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10651284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档