我正在创建一个注册表单,我想验证它并检查用户名和电子邮件的可用性,然后才允许用户提交表单,这样我就不需要单独的页面告诉他们错误并让他们重新开始
检查可用性的代码是:
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#username-use").val("inuse");
}else{
$("#username").css('background-image','none');
$("#username-use").val("free");
} }, 'JSON'); }
除了明显的差异之外,检查电子邮件的代码完全相同。它检查数据库是否匹配用户名/电子邮件,并根据结果设置隐藏字段的值。隐藏字段默认设置为“空闲”。
如果用户名或电子邮件设置为“inuse”,则此代码应禁用注册按钮。但是,它似乎有自己的想法,我无法弄清楚它是如何达到最终结果的。
function buttonCheck() {
var username = $("#username-use").val();
var email = $("#email-use").val();
if(username == "free" && email == "free") {
$("#registration-send").attr('disabled','disabled');
}
else {
$("#registration-send").removeAttr('disabled');
} }
似乎在计算中是向后的,当某些东西“无用”时启用按钮。我尝试过交换东西,但它没有改变任何东西。
checkUsername()/ checkEmail()和buttonCheck()一起调用onChange的相关输入:
<input id="username" name="username" type="text" autocomplete="off" maxlength="100" class="req-string" onChange="checkUsername(); buttonCheck()">
答案 0 :(得分:0)
免费提示:接受回调函数
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#registration-send").attr('disabled','disabled');
}else{
$("#username").css('background-image','none');
$("#registration-send").removeAttr('disabled');
} }, 'JSON'); }
您无需设置隐藏字段。最好的方法是在成功回调中处理它。
此外,您可以编写类似的代码来检查电子邮件地址的原子性。
UPDATE ::
var correctUsername=0,correctEmail=0;
function checkUsername() {
$.post('php/availability.php',{username: $('#username').val()}, function(usernamedata){
if(usernamedata.exists){
$("#username").css('background-image','url(images/in-use.png)');
$("#registration-send").attr('disabled','disabled');
correctUsername=0;
}else{
$("#username").css('background-image','none');
correctUsername=1;
if(correctEmail==1){
$("#registration-send").removeAttr('disabled');
}
} }, 'JSON'); }
重复电子邮件的类似代码,如果correctEmail=1
removeAttr
和correctUsername==1