2017-08-17 7 views
1

パーズリーJSを使用してフォームを検証しています。 ユーザがシステムに登録すると、システムはpolice_idがシステムに存在するかどうかをチェックします。 ここにAJAX Jqueryコードがあります。Parsley JS forceフィールドの検証に失敗する

//police_id 
$('#add_user input[name=police_id]').keyup(function (e) { 
    $('.exists_police_id').hide(); 
    $('.ok_police_id').hide(); 
    var site_path = $('#sitePath').val(); 
    var value = $(this).val(); 
    var field = 'policeId'; 
    var table_name = 'tbl_users'; 
    if(value.length>9){ 
     $('.loading_pic_police_id').show(); 
     $.ajax({ 
      url:site_path +'/users_manage_cont/check_unique_fields', 
      method:'POST', 
      data:{table_name:table_name,field:field,value:value}, 

      success:function(data) 
      { 
       $('.loading_pic_police_id').hide(); 

       if(data ==''){ 
        $('.ok_police_id').show(); 
       }else{ 
        $('input[name=police_id]').parsley().addError('forcederror', {message: ' This Police ID already Exists in the System.', updateClass: true}); 
        return false; //this validation fails 
       } 
      } 

     }); 
    } 
}); 

police_idが存在しない場合、応答データはnullです。次に、ユーザーがフォームを送信できるようにします。 しかし、問題は、police_idがテーブルに存在する場合です。フォームはvalidate = falseである必要があります。 は、ここに私の他の{}部分

$('input[name=police_id]').parsley().addError('forcederror', {message: ' This Police ID already Exists in the System.', updateClass: true}); 
       return false; //this validation fails 

このセットにエラーメッセージやフィールドの色の赤を見て。 送信ボタンをクリックすると、フォームを送信できます。 テーブルに既存のpolice_idがある場合、パースリー検証ステータスをfalseにするにはどうすればいいですか?

答えて

0

エラーメッセージだけが表示されますが、実際に検証が失敗しているわけではありません。

  1. は、その隠しフィールドの値と等しくないする
  2. テストあなたはパセリと入力フィールドをpolice_id隠し入力フィールドにAJAXからの戻り値を書く:

    は、ここに私の提案です。

私はjsfiddleを作成しました。 "12345"(あなたの価値はもちろんAJAXから来るはずです)と入力すると、エラーメッセージが表示され、検証されません。あなたが何か他のものを入力した場合、それは検証されます。それはではなく、が完璧ですが、それはあなたに私が意味する印象を与えるはずです。

jsfiddle.net/68y7nc0t/

よろしく

関連する問題