0

我正在创建一个注册表单,我想在它允许用户提交表单之前对其进行验证并检查用户名和电子邮件的可用性,这样我就不需要一个单独的页面来告诉他们错误并让他们重新开始。

检查可用性的代码是:

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'); }

检查电子邮件的代码完全相同,除了明显的差异。它检查数据库中匹配的用户名/电子邮件,并根据结果设置隐藏字段的值。默认情况下,隐藏字段都设置为“免费”。

如果用户名或电子邮件设置为“使用”,则该代码应该禁用注册按钮。但是,它似乎有自己的想法,我无法弄清楚它是如何达到最终结果的。

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()">
4

1 回答 1

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'); }

您不需要设置一些隐藏字段。最好的方法是在你的成功回调本身中处理它。

您也可以编写类似的代码来检查电子邮件地址的原子性。

更新::

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=1removeAttr如果correctUsername==1

于 2013-01-21T17:12:18.643 回答