2016-03-21 17 views
0

私はフォームを検証する前にフォームを検証するためにツールチップスクリプトを使用しましたが、検証にもかかわらずsymfonyのコントローラに送信されるアクションは正しくありません。これは小枝でアクションは検証なしのフォームで送信されます

 <form id="rappel-form" class="form-horizontal" name="rappelform" method="post" enctype="multipart/form-data" 
              action="{{ path('register') }}"> 

.............. 

/> 

私のコードで、私のスクリプトブロックでは、これは私のコードです:

<script> 

     jQuery('#formulaire').ajaxForm({ 

     beforeSubmit: function (arr, $form, options) { 


      if(! $form.valid()) return false; 

      else return true; 
     }, 

     success: function (data) { 
      if(data.dataa!=null){ 
       alert(" succées"); 
      } 
      else 
       alert('erreur d éxécution de la requête'); 


     }, 
     error: function() { 
      //jQuery('#main-content').html("erreur d'éxécution de la requête"); 
      alert('erreur d éxécution de la requête'); 

     } 
    }); 
</script> 

とdocument.ready

<script type="text/javascript"> 


    $(document).ready(function() { 
     jQuery.validator.addMethod("regexphone", function (value, element, regexp) { 

      if (regexp.constructor != RegExp) 
       regexp = new RegExp(regexp); 
      else if (regexp.global) 
       regexp.lastIndex = 0; 
      return this.optional(element) || regexp.test(value); 
     }, ""); 
     $(document).ready(function() { 
      $('#formulaire input[type="text"]').tooltipster({ 
       trigger: 'custom', // default is 'hover' which is no good here 
       onlyOne: false, // allow multiple tips to be open at a time 
       position: 'right' // display the tips to the right of the element 
      }); 
      $('#formulaire input[type="password"]').tooltipster({ 
       trigger: 'custom', // default is 'hover' which is no good here 
       onlyOne: false, // allow multiple tips to be open at a time 
       position: 'right' // display the tips to the right of the element 
      }); 
      $('#formulaire input[type="number"]').tooltipster({ 
       trigger: 'custom', // default is 'hover' which is no good here 
       onlyOne: false, // allow multiple tips to be open at a time 
       position: 'right' // display the tips to the right of the element 
      }); 

      $('#formulaire').validate({ // initialize the plugin 
       errorPlacement: function (error, element) { 
        $(element).tooltipster('update', $(error).text()); 
        $(element).tooltipster('show'); 
       }, 
       success: function (label, element) { 
        $(element).tooltipster('hide'); 
       }, 
       rules: { 
        'contact[name]': { 
         required: true, 
         minlength: 2 
        }, 
        'contact[gsmPrimary]': { 
         required: true, 
         'regexphone': /^0[1-9][0-9]{8}$/ 
        }, 
        'contact[lastName]': { 
         required: true, 
         minlength: 2 
        }, 
        'contact[listcountry]': { 
         required: true, 

        } 

       }, 
       messages: { 

        'contact[name]': { 
         required: "{{ 'message.contact.nom.required'|trans }}", 
         minlength: "{{ 'message.contact.nom.min'|trans }}", 
         maxlength: "Votre nom doit faire au plus 50 caractères." 
        }, 

        'contact[gsmPrimary]': { 
         required: "{{ 'message.contact.telephone.required'|trans }}", 
         'regexphone': "{{ 'message.contact.telephone.validation'|trans }}" 
        }, 
        'contact[lastName]': { 
         required: "{{ 'message.contact.prenom.required'|trans }}", 
         minlength: "{{ 'message.contact.prenom.min'|trans }}" 
        }, 
        'contact[listcountry]': { 
         required: "{{ 'message.contact.country'|trans }}", 

        } 

       }, 
       submitHandler: function (form) { // for demo 
        //alert('valid form submitted'); // for demo 
        return false; // for demo 
       } 
      }); 

     }); 
    }); 

</script> 

問題、スクリプトが検証しますフォームを表示し、私にエラーを表示するが、その後、コントローラにフォームを提出し、私は大きな問題がある。

+0

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。この質問を明確にするために、[How to Ask]ページ(http://stackoverflow.com/help/asking)を参照してください。 – lrnzcig

+0

スクリプトはフォームの検証を行い、エラーを表示し、それが間違っているにもかかわらずフォームを送信した後に表示されます。通常はフォームを検証し、エラーを修正してからフォームを送信する必要がありますが、私のケースでは、スクリプトは2つのケース(正しいかどうか)でフォームを送信します。私はフォームを正しく検証する必要があります。その後、フォームを一度送信すると、すべてのエラーが修正されています。 –

+0

「返されました」と表示された[関連する回答](http://stackoverflow.com/a/11607773/3585500) 'false'は動作せず、' xhr.abort'を呼び出しました。あなたの 'form id = 'rappel-form''にも気付きましたが、あなたのjqueryセレクタは' formulaire'です。 – ourmandave

答えて

0

スクリプトが存在しない要素にアタッチするイベントに耳を傾け、問題を解決する方法

どんな考えください。上記のコードが正しいと仮定すると、適切に強化したいフォームをターゲットにする必要があります。