新手学php 请教一个文本框验证不为空的问题?
我在model层:
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。 谢谢
------解决方案--------------------
看你的model应该是cakephp写的吧?
你这种写法,是没法满足你的要求的.这是cakephp自带的验证方式.通过这种方式,之后提交后才会进行验证的.但是这种方式的好处就是,如果你在页面中,若果以model.field方式定义标签,错误会自动输出在input框下面的.
按你的要求,你可以使用jquery,进行校验.可以定义光标失去焦点事件,就及时提示错误消息.你可以找个网站会员注册的,看看别人的写法.基本上都有这种写法.
------解决方案--------------------
在页面中
input('user.username',array('class'=>'sinput','onblur'=>'checkusername(this.value)','maxlength'=>50,'size'=>30));?>
用户名由4-16个字符(包括中文、字母、数字
js可以写
function checkusername(){
var username = $('#memberusername').val();
var target = $(#checkusername);
if (username.length 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( );
}
})
return true;
}
}
}
------解决方案--------------------
探讨
在页面中
input('user.username',array('class'=>'sinput','onblur'=>'checkusername(this.value)','maxlength'=>50,'size'=>30));?>
用户名由4-16个字符……
------解决方案--------------------
建议用codeigniter...有配验证类
http://codeigniter.org.cn/user_guide/libraries/form_validation.html#individualerrors
------解决方案--------------------
当我在文本框输入时候,要是为空的话,就立马提示一个对话框(你所输入的内容不为空)。
你这个状态就已经决定了,你不用js(客户端)的话,php(服务端)是没有办法知道这个状态。
你觉得客户端的事件不通过一定的通信方式传递给服务端,服务端就能知道这个事件的发生?