0

私の名前はロマーノです。フォームの検証プロセスに関するガイダンスを探しています。現在、 USERNAMEフィールドとTERMS and 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 文字を超えており、データベースに存在しない場合です。

それで、これは簡単な作業ですか?あるべきように聞こえますが、途方に暮れています (おそらく、過去 2 日間のコードを調べた結果です)。

ありがとう!!!

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 に答える