0

我的名字是 Romano,我正在寻找有关表单验证过程的一些指导。
我目前有一个注册表单,其中包含针对USERNAME字段和TERMS 和 CONDITIONS复选框的验证过程。

我对复选框的验证很简单:

<script type="text/javascript">
function apply()
 {
document.frm.sub.disabled=true;
if(document.frm.chk.checked==true)
{
document.frm.sub.disabled=false;
}
if(document.frm.chk.checked==false)
{
document.frm.sub.enabled=false;
}
}
</script>

表单域调用函数:

这工作正常。

我还有另一个 javascript 代码块来验证用户名,使其满足最低要求,并且还确保它当前不存在于我的数据库中。那段代码要大得多,看起来像这样:

 <script type="text/javascript">

$(document).ready(function() 
{
$("#username").change(function() 
{ 
var username = $("#username").val();
if(username.length > 5)//if the lenght greater than 5 characters
{
$("#availability_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');

 $.ajax({  //Make the Ajax Request
 type: "POST",  
 url: "ajax_check_username.php",  
 data: "username="+ username, 
 success: function(server_response){  

 $("#availability_status").ajaxComplete(function(event, request){ 

if(server_response == '0')
{ 
$("#availability_status").html('<img src="images/available.png" align="absmiddle">
  <font color="Green">Available </font>  ')
}  
else  if(server_response == '1')
{  
 $("#availability_status").html('<img src="images/not_available.png" align="absmiddle">
    <font color="red">Not Available </font>') 
 }  
     });
  } 

  }); 

  }
   else
   {

   $("#availability_status").html('<font color="#cc0000">Username too short</font>');
  }
  return false;
  });

   });
  </script>

这段代码也很完美。

我想做的是集成两个代码块,以便只有在所有条件都为真时才启用提交按钮。换句话说,当复选框被选中并且用户名大于 5 个字符并且它不存在于数据库中时。

那么,这是一件容易的事吗?听起来应该是,但我不知所措(可能是过去两天看代码)。

谢谢!!!

4

1 回答 1

0

您希望复选框或名称的验证触发更改。鉴于您正在执行 Ajax 检查以查看用户名是否有效,我将设置一个标志以指示当前名称是否有效,以便 Ajax 仅在名称更改而不是复选框时运行。所以也许是这样的:

$(document).ready(function() {
    var usernameOK = false,   // I assume username starts out blank
        termsChecked = false;

    function setSubmitEnabling() {
        document.frm.sub.disabled = !(usernameOK && termsChecked);
    }


    $("#yourCBidHere").click(function() {
        termsChecked = this.checked;
        setSubmitEnabling();
    });

    $("#username").change(function() {
        var username = this.value;
        if(username.length <= 5) { //if the name too short
            $("#availability_status").html('<font color="#cc0000">Username too short</font>');
            usernameOK = false;
            setSubmitEnabling();
            return;
        }
        $("#availability_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');
        usernameOK = false;
        setSubmitEnabling();
        $.ajax({
            type: "POST",  
            url: "ajax_check_username.php",  
            data: "username="+ username, 
            success: function(server_response){
                if(server_response == '0'){ 
                    $("#availability_status").html('<img src="images/available.png" align="absmiddle"><font color="Green">Available </font>');
                    usernameOK = true;
                } else if(server_response == '1') {  
                    $("#availability_status").html('<img src="images/not_available.png" align="absmiddle"><font color="red">Not Available </font>');
                    usernameOK = false;
                }
                setSubmitEnabling();
            }
        });
    });
});
于 2012-07-03T02:14:47.880 回答