我在model层:
    <?phpclass City extends AppModel {
    var $name = 'cities';
var $validate = array(
'city_name' => array(
'notempty' => array(
'rule' => 'notEmpty',
'message' => '城市名不能为空!',
'last' => true,
'required' => true,
'allowEmpty' => false
)
),
'city_name_eng' => array(
'notempty' => array(
'rule' =>'notEmpty',
'message' => '英文名不能为空!',
'last' => true,
'required' => true
)
),
'city_code' => array(
'notempty' => array(
'rule' => 'notEmpty',
'message' => '城市编码不能为空!',
'last' => true,
'required' => true
)
)
);
}
?>它可以判断文本框不为空,但是不提示消息出来!
   我要求的结果是:利用mvc(php框架内置的消息机制)形式,当我在文本框输入时候,要是为空的话,就立马提示一个对话框(你所输入的内容不为空)。
  请大家 教我一个详细的流程,最好附加代码, 就举个例子, 一个字段的操作就ok。 谢谢 

解决方案 »

  1.   

    这里是php区吗?发个帖子没人回!悲剧
      

  2.   

    看你的model应该是cakephp写的吧?
    你这种写法,是没法满足你的要求的.这是cakephp自带的验证方式.通过这种方式,之后提交后才会进行验证的.但是这种方式的好处就是,如果你在页面中,若果以"Model.field"方式定义标签,错误会自动输出在input框下面的.按你的要求,你可以使用jquery,进行校验.可以定义光标失去焦点事件,就及时提示错误消息.你可以找个网站会员注册的,看看别人的写法.基本上都有这种写法.
      

  3.   

    在页面中
    <td>
    <?php echo $form->input('User.username',array('class'=>'sinput','onblur'=>'checkUserName(this.value)','maxlength'=>50,'size'=>30));?>
    <span id="checkusername" class="tip_msg">用户名由4-16个字符(包括中文、字母、数字</span>
                </td>js可以写
    function checkUserName(){
        var username = $('#MemberUsername').val();
        var target = $("#checkusername");
        if (username.length <= 3) {
             target.addClass('error_msg');
             target.html("用户名少于3个字符");
             return false;
        }else{
            var rule=/^[A-Za-z0-9\u4E00-\u9FA5]+$/;
            if (!rule.test(username)){
                target.addClass('error_msg');
                target.html("用户名由字母、数字、中文组成");
                return false;
            } else{
                //检查用户名是否注册
                $.post('/members/checkUsername',{username:username},function(data){
                    if( data=="true" ){
                        target.addClass('error_msg');
                        target.html("用户名已存在");
                        return false;
                    } else{
                        target.removeClass('error_msg');
                        target.html("<span class='tip_checked'>&nbsp</span>");
                    }
                })
                return true;
            }
        }
    }
      

  4.   


    支持这个,如果你js不太厉害的话,直接用jquery.vaildate也可以得到你要的效果!具体可以看看http://www.blogguy.cn/show-721-1.html
      

  5.   

    谢谢 你好 我们最好是不用js 有没有直接通过php 内置的验证方法 只通过mvc 三层 就可以的
      

  6.   

    建议用Codeigniter...有配验证类
    http://codeigniter.org.cn/user_guide/libraries/form_validation.html#individualerrors
      

  7.   

    当我在文本框输入时候,要是为空的话,就立马提示一个对话框(你所输入的内容不为空)。你这个状态就已经决定了,你不用js(客户端)的话,php(服务端)是没有办法知道这个状态。
    你觉得客户端的事件不通过一定的通信方式传递给服务端,服务端就能知道这个事件的发生?
      

  8.   

    如果你是用的thinkphp开发的话 就很简单了  
    在model类
    class LeavewordModel extends Model{
      protected $_validate=array( 
      array('lw_uname','require','昵称不能为空,请输入昵称!'),
    }
    其中lw_uname就是所对应的文本框名字也就是数据库的字段名,require是系统内置的常用正则验证的规则(就是用来验证输入框内容不能为空的)