2017-01-12 6 views
0

私は自分のフォームを検証するためにparsley.jsを使用しています。 ajaxを使用してデータベースに要素が存在するかどうかをチェックします。私がカスタマイズしたパセリの新しい違反は機能しません

{{ form_widget(form.companyname, {'attr': {'class': 'md-input', 'required':'', 'data-parsley-company':'3'}}) }} 

    <script> 
     $('#sbcplatformbundle_fournisseur_companyname').on('change', function() { 
      $comanyname = $('#sbcplatformbundle_fournisseur_companyname').val(); 
      var url = '{{ path('fournisseur_bycompanyname', {'companyname': 'companyName'}) }}'; 
      url = url.replace('companyName', $comanyname); 
      $.ajax({ 
       async: true, 
       type: "GET", 
       url: url, 
       success: function (json) { 
        console.log(JSON.stringify(json)); 
        if (json.success == true) { 
         // declancher une exeption 
         window.Parsley.addValidator('company', { 
          validate: function (value) { 
           return value; 
          } 
         }).addMessage('en', 'This company name already exists'); 
        } 
       } 
      }); 
     }); 
    </script> 

これが最初の変更のために動作しません: ので、私はこれをしませんでした。 2回目の変更で私はconsilでこの警告メッセージを見つけました:

main_Mask_parsley.min_1.js:16 Validator "company"はすでに定義されています。

どうすればよいですか?

+0

このコードは、すべてのAjaxリクエストに応じて「会社のためのバリデータを追加している - 一度だけそれを追加(そして要求が発生する前に)必要があります – hackerrdave

答えて

0

あなたのコードは混乱のカップルを示しています

  • あなたが検証を自分でトリガするが、それを行う方法をパセリを伝えるべきではありません。
  • 初期化時にカスタムバリデータを1回登録します。
  • 自分でajaxを呼び出す必要はありません。remoteバリデータを使用してください。

幸運

関連する問題