2011-12-10 7 views
3

jquery validateプラグインを使用しているかどうかを確認しています。用量はうまくいくようです。どこが間違っているのか知りたいのですが、他のすべての検証はうまくいきます。これ以外はユーザー名をjqueryで確認しました。プラグインを確認しました

jqueryの検証プラグインのページ:ADVでhttp://bassistance.de/jquery-plugins/jquery-plugin-validation/

javascriptの

<script type="text/javascript"> 
     $(document).ready(function(){ 
     $("#register").validate({ 
      debug: false, 
      rules: { 
       username: { 
       required: true, 
       minlength: 2, 
       remote: "users.php" 
      }, 
       email: { 
        required: true, 
        email: true 
       }, 
      password: { 
       required: true, 
       minlength: 5 
      }, 
      confirm_password: { 
       required: true, 
       minlength: 5, 
       equalTo: "#password" 
      } 
      }, 
      messages: { 
       username: { 
       required: "Please enter a username", 
       minlength: "Your username must consist of at least 2 characters", 
       remote: jQuery.format("{0} is already in use") 
      }, 
       email: "A valid email will help us get in touch with you.", 
      }, 
      password: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long" 
      }, 
      confirm_password: { 
       required: "Please provide a password", 
       minlength: "Your password must be at least 5 characters long", 
       equalTo: "Please enter the same password as above" 
      }, 
      submitHandler: function(form) { 
       // do other stuff for a valid form 
       $.post('adduser.php', $("#register").serialize(), function(data) { 
       $("#register").fadeOut('fast', function(){ 
        $('#results').html(data); 
       }); 
       }); 
      } 
     }); 
    }); 
</script> 

users.php

<?php 
$request = $_REQUEST['username']; 

//usleep(150000); 
$query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
$result = mysql_num_rows($query); 
if ($result == 0){ 
$valid = 'true';} 
else{ 
$valid = 'false'; 
} 
echo $valid; 
?> 

register.php

<form name="register" id="register" method="post" action=""> 
<section> 
<label for="username">Username:</label> 
<div> 
<input type="text" tabindex="1" class="input" id="username" name="username" value=""/> 
</div> 
</section> 
<!--#--> 
<section> 
<label for="email">email</label> 
<div> 
<input type="text" tabindex="2" class="input" id="email" name="email" value=""/> 
</div> 
</section> 
<!--#--> 
<section> 
<label for="password">Password</label> 
<div> 
<input type="password" tabindex="3" class="input" id="password" name="password" value=""/> 
</div> 
</section> 
<!--#--> 
<section> 
<label for="confirm_password">Confirm Password</label> 
<div> 
<input type="password" tabindex="4" class="input" id="confirm_password" name="confirm_password" value=""/> 
</div> 
</section> 
<!--#--> 
<br/> 
<input type="submit" tabindex="5" id="submit" value="REGISTER" /> 
</form> 
<div id="results"> </div> 

感謝ance。

答えて

0

OPに答えるには、$ _GETを使用するとよいでしょう。また、mysql_num_rowsはPHP 5.5.0以降で廃止されましたので、おそらくそれを更新したいと考えています。クエリがfalseを返すかどうかだけを確認することができます。

<?php 
$request = $_GET['username']; 

//usleep(150000); 
$query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
if ($query == false){ 
$valid = 'true';} // username available 
else{ 
$valid = 'false'; // username unavailable 
} 
echo $valid; 
?> 
2

私は同じですが、私はそれらの検証とthisを使用して、ユーザー名が存在するかどうかを確認します。それは素晴らしい作品です。

+0

infoについてはtnxですが、ユーザー名が既に存在していても登録を停止しませんか?私のコードを剪定してもいいですか? – maxlk

+0

私がしたのは保存ボタンを隠すことで、ユーザー名が存在しなければボタンを表示します。 – Andres

1

まず、あなたは無視され、残りのメッセージにつながる、途中であなたのメッセージオプションを閉じている余分な}を持っています。 confirm_passwordメッセージブロックの後にこれを移動する必要があります。}次に、jQuery.formatではなくjQuery.validator.formatを呼び出す必要があります。私はこれがなぜこの特定の検証規則がうまくいかないのかと考えています。これらを修正し、それがあなたのために働くかどうかを確認してください。

+0

'}'コードが削除された場合、動作を停止します。他のすべての検証作業はうまくいきます。ユーザー名の確認を除きます。 – maxlk

+0

@maxlk私はそれを削除するとは言わなかった、私はconfirm_passwordブロックの後にそれを移動すると言った。あなたのメッセージオプションが途中で終了していることがわかりません。とにかく、あなたが記述した問題の原因となっている書式関数呼び出しの名前を誤ってしまったと思います。 – tvanfosson

+0

このメソッドを試してみました。違いはありません。他のすべてはユーザー名の確認を除いて検証されます。 – maxlk

0

これを試してみてください......

JS

$("#register").validate({ 
     debug: false, 
     rules: { 
      username: { 
      required: true, 
      minlength: 6, 
      remote: { 
       url: "Your PHP", 
       type: "post", 
       data: { 
       funct: 'user_check', 
       username: function() { 
        return $("#username").val(); 
       } 
       } 
      } 
     }, 
     messages: { 
      username: { 
      required: "Please enter a username", 
      minlength: "Your username must consist of at least 2 characters", 
      remote: jQuery.format("{0} is already in use") 
     } 
    }); 
}); 

PHP

<?php 
    function user_check(){ 
    $username = $_POST['username']; 
    $query = mysql_query("SELECT * FROM users WHERE username ='$username'"); 
    if ($query == false){ 
     $valid = 'true';} // username available 
    else{ 
     $valid = 'false'; // username unavailable 
    } 
     echo $valid; 
    } 
?> 

May help ..

関連する問題