layui中使用form表单监听ajax异步验证注册的实例
流行的框架layui中的一个小案例、就是form表单监控提交并且使用ajax异步提交验证数据。在layui中我们想使用哪个模块就要layui.use('form',function{});这种形式要引用form内置模板,下面是HTML全部代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<!DOCTYPE html> <html> <head> <meta charset= "utf-8" > <title>注册</title> <meta name= "viewport" content= "width=device-width, initial-scale=1, maximum-scale=1" > <meta name= "keywords" content= "雷小天" > <meta name= "description" content= "雷小天博客-layui中使用form表单监听异步验证注册" > <link rel= "stylesheet" href= "__RES__/layui/css/layui.css" rel= "external nofollow" > <link rel= "stylesheet" href= "__RES__/css/global.css" rel= "external nofollow" > </head> <body> <div class= "fly-header layui-bg-black" > <div class= "layui-container" > <a class= "fly-logo" href= "{:U('device/getinfo')}" rel= "external nofollow" > <img src= "__RES__/images/logo.png" alt= "layui" > </a> <ul class= "layui-nav fly-nav-user" > <!-- 未登入的状态 --> <li class= "layui-nav-item" > <a class= "iconfont icon-touxiang layui-hide-xs" href= "user/login.html" rel= "external nofollow" ></a> </li> <li class= "layui-nav-item" > <a href= "{:U('device/login')}" rel= "external nofollow" rel= "external nofollow" >登入</a> </li> <li class= "layui-nav-item" > <a href= "javascript::void;" rel= "external nofollow" >注册</a> </li> </ul> </div> </div> <div class= "layui-container fly-marginTop" > <div class= "fly-panel fly-panel-user" pad20> <div class= "layui-tab layui-tab-brief" lay-filter= "user" > <ul class= "layui-tab-title" > <li><a href= "{:U('device/login')}" rel= "external nofollow" rel= "external nofollow" >登入</a></li> <li class= "layui-this" >注册</li> </ul> <div class= "layui-form layui-tab-content" id= "LAY_ucm" style= "padding: 20px 0;" > <div class= "layui-tab-item layui-show" > <div class= "layui-form layui-form-pane" > <form method= "post" > <div class= "layui-form-item" > <label for = "L_username" class= "layui-form-label" >手机</label> <div class= "layui-input-inline" > <input type= "text" id= "signuppassdata" name= "phone" required lay-verify= "required" autocomplete= "off" class= "layui-input" > </div> </div> <div class= "layui-form-item" > <label for = "L_username" class= "layui-form-label" >卡号</label> <div class= "layui-input-inline" > <input type= "text" id= "cardno" name= "cardno" required lay-verify= "required" autocomplete= "off" class= "layui-input" > </div> </div> <div class= "layui-form-item" > <button class= "layui-btn" type= "submit" lay-filter= "reg" lay-submit= "" id= "signuppass" >立即注册</button> </div> </form> </div> </div> </div> </div> </div> </div> <div class= "fly-footer" > <p>开门社区 2018 © <a href= "http://www.100txy.com/" rel= "external nofollow" target= "_blank" >100txy.com 出品</a></p> <p><a href= "JavaScript::void;" rel= "external nofollow" target= "_blank" >雷小天博客</a></p> </div> <script src= "__PUBLIC__/mobile/js/jquery.js" ></script> <script src= "__RES__/layui/layui.js" ></script> <script> //监听提交 layui.use( 'form' , function (){ var form = layui.form; form.on( 'submit(reg)' , function (data){ // layer.msg(JSON.stringify(data.field));//弹出json格式所有表单的值 var phone=data.field.phone; var cardno=data.field.cardno; if (phone.length!=11){ layer.msg( '请输入有效的手机号码' , {icon: 2}); return false ; } var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; if (!myreg.test(phone)){ layer.msg( '请输入有效的手机号码' , {icon: 2}); return false ; } if (cardno.length!=8){ layer.msg( '请输入有效的卡片内码!' , {icon: 2}); return false ; } $.ajax({ type: "POST" , url: "index.php?m=Home&c=Device&a=ajax_reg" , data: "phone=" +phone+ "&cardno=" +cardno, dataType: "json" , success: function (data){ if (data.status== 'yes' ){ layer.msg( '注册成功!' , {icon: 1}); var url = "{:U('device/getinfo')}" ; //成功跳转的url setTimeout(window.location.href=url,2000); } else { layer.msg(data.msg, {icon: 2}); } }, }); return false ; }); }); </script> </body> </html> |
下面是ajax_reg逻辑方面,这是我的业务逻辑大家没必要照搬,知道怎么用就行了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//表单异步提交 public function ajax_reg(){ if (isset($_POST[ 'phone' ])&&isset($_POST[ 'cardno' ])){ $roomnostr = M( "userinfo" )->where(array( 'cardno' =>$_POST[ 'cardno' ]))->getField( 'roomno' ); if (!$roomnostr){ echo json_encode(array( 'status' => 'no' , 'msg' => '无效的卡片内码,请联系管理员!' )); exit(); } $wechatinfo=$_SESSION[ 'wechatinfo' ]; if (!$wechatinfo){ echo json_encode(array( 'status' => 'no' , 'msg' => '页面已过期请重新扫码进入!' )); exit(); } $result= M( "weixin" )->where(array( 'openid' =>$wechatinfo[ 'openid' ]))->field( 'is_signup,area_id' )->find(); $areaArr=explode( '-' ,$result[ 'area_id' ]); // $result=M("weixin")->getFieldByOpenid($_POST['openid'],'is_signup'); if (isset($result)&&$result[ 'is_signup' ]==1){ //如果注册过一次下次只更新门区 $new_area=$roomnostr; $reg=M( "weixin" )->where(array( 'openid' =>$wechatinfo[ 'openid' ]))->save(array( 'area_id' =>$new_area)); echo json_encode(array( 'status' => 'no' , 'type' => 'signuppass' , 'msg' => '你已注册为该门区的租户,请勿重复注册!' )); exit(); } else { $data=array( 'is_signup' =>1, 'phone' =>$_POST[ 'phone' ], 'openid' =>$wechatinfo[ 'openid' ], 'nickname' =>$wechatinfo[ 'nickname' ], 'sex' =>$wechatinfo[ 'sex' ], 'headimgurl' =>$wechatinfo[ 'headimgurl' ], 'area_id' =>$roomnostr, 'regtime' =>time(), 'cardno' =>$_POST[ 'cardno' ], ); $reg=M( "weixin" )->add($data); if ($reg){ echo json_encode(array( 'status' => 'yes' , 'msg' => '恭喜你,注册成功!' )); } } } } |
THE END