hq金水

愿你是阳光,明媚不忧伤~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

表单验证

Posted on 2016-08-02 17:43  hq金水  阅读(117)  评论(0编辑  收藏  举报

常用的验证:

<?php
namespace Home\Model;
use Think\Model;
class NationModel extends Model{
    /*protected $_validate=array(
        //静态验证--写死的
        array("code","require","代号不能为空",0,"regex",3),
        array("name","","姓名不能重复",0,"unique",3),
        //array("name","nation","两次输入的内容不一致",0,"confirm",3),
        //array("nation","123","输入的内容不正确","0","equal",3)
        //array("nation","18,50","输入的年龄要在18-50之间",0,"between",3)
        array("nation","email","输入的邮箱格式不正确",0,"regex",3)
    );*/
}

静态验证(在模型里写死的,直接用):

静态定义方式因为必须定义模型类,所以只能用D函数实例化模型

动态验证(比较灵活,哪里用到哪里写):

//写出规则
$rules
=array( array("code","require","代号不能为空",0,"regex",3))
//调用验证
if(!$m->validate($rules)->create()) { //验证失败 echo $m->getError(); } else    { //验证通过 echo "验证通过"; }

动态验证不依赖模型类的定义,所以通常用M函数实例化模型就可以

实例:

要求:实现类似注册失去焦点时,验证用户名的功能

静态页面:

<body>
<form action="__ACTION__" method="post">
代号:<input id="dh" type="text" name="code" />
<span id="cc"></span>
<input type="submit" value="注册" />
</form>
</body>
<script type="text/javascript"> $(document).ready(function(e) { //动态验证 $("#dh").blur(function(){ var code=$(this).val(); $.ajax({ url:"__CONTROLLER__/bb", data:{code:code}, type:"POST", dataType:"TEXT", success: function(data){ if(data.trim() == "输入正确") { $("#cc").html(data); $("#cc").css("color","#0F0"); } else { $("#cc").html(data); $("#cc").css("color","#F00"); } } }) }) }); </script>

控制器:

function bb(){//一个方法,两个逻辑        
      if(empty($_POST)){$this->display();//显示功能}
      else{
//实现验证功能 $m=D("nation"); $rules=array(array("code","require","代号不能为空",0,"regex",3)); if(!$m->validate($rules)->create()) { //验证失败 $str=$m->getError(); $this->ajaxReturn($str,"eval"); } else { $str="输入正确"; $this->ajaxReturn($str,"eval"); } }
      }