首页 新闻 会员 周边

jquery.validate.js

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-20 14:48

jquery.validate怎么给要校验的表单元素委托事件

页面是通过ajax后来加载进去的。

大高小郑的主页 大高小郑 | 初学一级 | 园豆:199
提问于:2017-04-14 15:47
< >
分享
最佳答案
0

你是想问怎么使用jquery.validate吗?

首先文件都引进去,在单独建一个js文件,用来调用插件。

这里以表单注册为例

$("#myform").validate({        //选择器是form表单的
        rules:{
            uname:{        //uname  是你的表单控件的name,这儿是用户名
                required:true,  //必填,固定值
                minlength:5,   //输入长度
                remote:{        //发动ajax请求,这儿异步验证用户名是否存在
                    url:"index.php?m=index&f=login&a=ajax",   //请求地址
                    type:"post",
                    dataType:"json",
                    data:{
                        uname:function(){ 
                            return $("input[name=uname]").val()   //传入数据是输入框的value值
                        }
                    }
                }
            }, 
            upass:{   //密码
                required:true,
                minlength:5
            },
            upass2:{  //确认密码
                required:true,
                minlength:5,
                equalTo:"#pass"   //是和哪个value进行对比,#pass是密码(name=upass)的id
            },
            code:{   //此处是验证码的异步验证,根据需求
                required:true,
                remote:{
                    url:"index.php?m=index&f=login&a=ajaxCode",
                    type:"post",
                    dataType:"json",
                    data:{
                        code:function(){
                            return $("input[name=code]").val()
                        }
                    }
                }

            }
        },
        messages:{  //此处是提示信息
            uname:{    //用户名的提示信息,对应rule的属性进行设置
                required:"用户名必填",
                minlength:"不能少于5位",
            },
            upass:{
                required:"密码必填",
                minlength:"密码不能少于5位"
            },
            upass2:{
                required:"必须确认密码",
                minlength:"密码不能少于5位",
                equalTo:"两次密码不一致"
            },
            code:{
                required:"验证码未填写",
                remote:"验证码不对"
            }
        }
    })
收获园豆:10
不会起名 | 菜鸟二级 |园豆:217 | 2017-04-15 09:39

这个校验是在输入框获得焦点、失去焦点和输入的时候都会校验的吗,为什么我的怎么都没反应呢

大高小郑 | 园豆:199 (初学一级) | 2017-04-20 14:05

@大高小郑: 失去焦点后会显示提示信息,你在浏览器审查元素那里找到对应的标签,有提示的时候才会显示,然后把对应的标签设置css样式,应该是这个属性

label.error{
    width:2.61rem !important;
    color: red;
    position: absolute;
    top: 0;left:2.68rem;
}

要给他定位,记得给父元素相对定位,不然就相对于浏览器定位了

不会起名 | 园豆:217 (菜鸟二级) | 2017-04-21 10:29

@大高小郑: 要设置css样式,主要是定位,不然看不到,在浏览器审查元素中才能找到,因为他是插件里自己建立的一个元素

不会起名 | 园豆:217 (菜鸟二级) | 2017-04-21 10:33
其他回答(2)
0

 jq有一个  delegate 委托事件可以实现:

类似这种:

$("div").delegate("span","dblclick",function(){
$(this).text("changed by delegate!!!!");
})

span是后来js添加的

codingHeart | 园豆:1511 (小虾三级) | 2017-04-14 15:54
0

页面是通过ajax后来加载进去的和校验表单的元素委托事件有什么关系,加载是加载,事件是事件

名字什么都是浮云 | 园豆:327 (菜鸟二级) | 2017-04-14 16:35

校验表单是通过给表单内的元素绑定一些事件,我页面未加载进来,如果不使用委托事件,那么等页面加载进来的时候那些页面上的表单元素并不会被自动添加上之前的校验事件

支持(0) 反对(0) 大高小郑 | 园豆:199 (初学一级) | 2017-04-20 13:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册