0

私はjQuery(jquery.validate.js)を使用してフォームの検証に取り組んでいます。ユーザー名が使用可能かどうかを確認する必要がありますが、その方法がわかりませんでした。助けてください。

HTML:

<input type="text" name="username" class="required checkAvailability" />

jQuery:

$(document).ready(function(){

  $.validator.addMethod("checkAvailability", function(username) {
    var isSuccess = false;
    $.ajax({ url: "/checkAvailibility",
      data: "username=" + username,
      async: false,
      success: function(available) {
        if (available == "TRUE")
            isSuccess = true;
        return $("message", returnData).text() == "Username available";
      }
    });
  }, "Username not available");

  $("#formID").validate();

});

サーバー側プログラムは、「TRUE」または「FALSE」(「returnData」変数によって返される)のいずれかの文字列を返します。

私の質問:メッセージとチェック結果の両方をvalidate()に返して、メッセージがフィールドの横に表示され、ユーザー名が使用できない場合にフォームが送信されないようにするにはどうすればよいですか?

4

3 に答える 3

0

サーバー上のフォームフィールドをチェックするための標準的で最も簡単な方法は、「リモート」メソッドを使用することです。サーバー側のメソッドからは、returnData=trueなどではなくテキスト「true」または「false」を返すだけです。

Javascriptはこれである必要があります

<script>
$(function () {
    $('form').validate({
        rules: { username: 
            {
            remote: '/checkAvailibility'
            }
        }
    });
});
</script>
于 2013-01-13T18:42:23.990 に答える
0

コードを少し再構築できますか? 何かのようなもの:

$(document).ready(function(){

  $validUsername = false;

  $("input.checkAvailability").keyup(function(){

    $.ajax({ url: "/checkAvailibility",
      data: "username=" + $(this).val(),
      success: function(available) {
        if (available == "TRUE"){
            $validUsername = true;
            $("message", returnData).text("Username available");
        }
        else{
            // Do something
        }
      }
    });

  }); 

  $.validator.addMethod("checkAvailability", function(username) {
    return $validUsername;
  }, "Username not available");

  $("#formID").validate();

});
于 2013-01-13T17:03:11.010 に答える
0

codeigniter を使用してこれを実装しました。これがあなたを助けますように。

コントローラー機能:

  function checkUserName()
{
    $user_name=$_GET['user_name'];
    if(isset($user_name))
    {
        $arr=$this->home_model->checkUserName($user_name);
        $cnt=count($arr);
        if($cnt > 0)
            echo json_encode(false);
        else
            echo json_encode(true);
    }
}

モデル機能:

function checkUserName($user_name)
{
    $this->db->select('a.id');
    $this->db->like('a.user_name',$user_name,'none');
    return $this->db->get('accounts a')->result();
    $this->db->get('accounts a')->result();
    echo $this->db->last_query();
    die;
}

HTML と JS:

<input type="text" name="user_name" placeholder="User name" id="user_name" class="form-control" value="">

JS:

$('#signup').validate(
{
    rules: 
    {
        user_name: 
        {
               //required: true,
        remote: baseUrl+'home/checkUserName'
        }
    }

    //Your Code here.......
}
于 2013-09-11T09:57:27.060 に答える