更新用户信息,用ajax的blur获取手机已存在提示信息时没修改也提示已存在

浏览:728 发布日期:2015/12/24 分类:技术分享
用以下代码验证手机号的唯一性,没有问题。(当然前提是在UserModel.class.php中写好验证规则,并在UserController.class.php中写好checkname函数)
$('input[name="phone"]').blur(function(){
var phone=$(this).val();
$.post('__URL__/checkname',{'phone':phone},function(data){
if(data==0){
error['phone']=0;
$('#mess4').html('手机号符合规则');
}else{
error['phone']=1;
$('#mess4').html(data); }
});
});

问题来了,添加用户信息时没有问题,但是在修改用户信息时,当你不修改手机号,当光标焦点离开时也会提示手机号已存在,怎么办呢?

其实很简单,只要作如下修改即可:
$.post('__URL__/checkname',{'phone':phone},function(data){
改为
$.post('__URL__/checkname',{'phone':phone,'id':id},function(data){
就行了。

原因是第一句代码中post并没有传递id参数,所以系统会认为这是新增数据,所以会进行验证,导致提示手机号存在。

修改后的代码传递了id参数,根据thinkphp现有的功能(自动验证时通过获取了id主键,判断出这是修改信息,系统对未修改的字段信息不会进行验证),实现不修改手机号时不会进行自动验证。
同理,邮箱和用户名也可以用这种方法。
最佳答案
评论( 相关
后面还有条评论,点击查看>>