JQuery:如果至少有一个字段在使用,请尝试禁用按钮

时间:2013-01-21 17:07:26

标签: jquery ajax validation disabled-input

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

检查可用性的代码是:

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

1 个答案:

答案 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

,您将设置removeAttrcorrectUsername==1