在用户注册网站时候,有的网站会实时告诉你,这个用户名已经注册过了。自己之前用的Yii的save()函数在表单提交的时候才验证,然后表单又要在填写一遍,觉得很繁琐。如果实时提醒,应该可以增加用户的体验度。
查询了使用的方式
在View视图页面使用JS
1、元素id = “Model_name”的文本框设置监听,利用onkeyup函数,就是文本框值一旦发生变化就进行操作
2、获取当前的值,然后使用ajax请求有关控制器下的函数进行处理打开
3、根据函数查询数据表的结果,如果存在则提示用户用户名已经注册了,如果不存在,则显示用户名可以注册,这里是一个绿色的钩
4、页面有个地方放置上述信息
完成
document.getElementById("Model_name").onkeyup = function(){
if($(this).val()){
$.ajax({
url:"/Model/Controller",
type : "POST",
data : { "name" : $(this).val(),
"check" : "checkName",
},
dataType : "json",
async : true,
success : function(mydata) {
var obj = eval(mydata);
if(obj.exist){//名字存在,告知不可以
$("#nameExist").html(obj.exist); //显示后端传递的结果
}else if(obj.notExist){//名字不存在,显示绿色的钩
var success = \'<img style ="max-width: 5%" src="teamSuccess.jpg" border="10px"/>\';
$("#nameExist").html(success); //显示后端传递的结果
}
},
error : function() {
alert("calc failed");
}
});
}
//view html
<input style="width:150px;" placeholder="请输入用户名称" name="TrTeam[name]" id="TrTeam_name" maxlength="12" type="text">
 <span id="nameNull" style="display:none;" ><font style="color:red;">请填写团队名称</font></span>
<span id="nameExist" style="color:red;"></span>
这里主要用的是js的函数onkeyup然后将获取的值用ajax的方式传递,表示这样很友好~~~
Controller中处理AJAX的有关信息
$teamName = $_POST["name"];
$model = Model::model();
$info = $model->findAllByAttributes(array('name'=>$name));
if($_POST["check"] == "checkName"){//创建时的名称检查,检查是否重名
if(!empty($info)){
$responce = array('exist'=>'用户名已存在,请重新输入');
}
else{
$responce = array('notExist'=>'用户名称可注册');
}
效果展示