2017-11-14 8 views
0

ボタンを複数回クリックしないようにフォームが処理している間に、送信ボタンを隠すスクリプトがあります。最近、これは常に動作していないようです。ディスクキャッシュからロードされたときにjQueryが壊れる

jQueryファイルの検証が毎回実行されていることを確認できます。私は自分のサーバーやCDNからロードされたファイルを使用したときに違いはありませんでした。

エラーは、ファイルがディスクキャッシュからロードされた場合にのみ表示されます。私は一時的にjQueryファイルの後にランダムなバージョン番号を追加することで問題を解決しましたが、ディスクキャッシュが使用されたときに何がブレークを引き起こしているのか疑問に思っていましたか?

ブラウザのコンソールリストこのエラー:それはjqueryの検証ファイルです後

custom-quote-form:21 Uncaught TypeError: $(...).validate is not a function 
    at HTMLDocument.<anonymous> (custom-quote-form:21) 
    at j (jquery.min.js:2) 
    at Object.fireWith [as resolveWith] (jquery.min.js:2) 
    at Function.ready (jquery.min.js:2) 
    at HTMLDocument.I (jquery.min.js:2) 

jquery.min.js負荷は最初、その後、CMSは、JSファイルをキャッシュされました。

これはA.Wolffは、右のトラックに私を設定するスクリプト

<script> 
    $(function() { 
     $("form[name='customBuilder']").validate({ 
      // remove error label 
      errorPlacement: function(error, element) {}, 
      rules: { 
       fname: "required", 
       lname: "required", 
       phone: "required", 
       company: "required", 
       Email: { 
        required: true, 
        email: true 
       }, 
      }, 
      submitHandler: function(form) { 
       $("#loading-img").css("display", "block"); 
       form.submit(); 
       var elem = $("#submitMessage"); 
       elem.css("display", "none"); 
       setTimeout(function() { 
        elem.css("display", ""); 
       }, 10000); 
      } 
     }); 
    }); 
< /script> 
+0

jqueryバリデーションプラグインをロードしていますか?そうでない場合は、[このリンク](https://stackoverflow.com/questions/21636850/jquery-validation-plugin-typeerror-validate-is-not-a-function)を参考にしてください。 –

+1

プラグインがロードされる前に '$ .fn.validate'メソッドを使用しようとしているからです。それから、私はあなたがこれらのスクリプトを含んでいると思いますが、 'script'タグを使っているので、同期的な方法ではありません。 –

答えて

0

です。 jqueryの検証プラグインのリンクからdefer = "defer"を削除しました。 CMSによって自動追加されました。

0

私はこの種のセットアップで同様の問題が発生しています。早送りすると、私はDev Toolsのガイドラインに従ってChromeのページを高速化していました。これは、ページの先頭にレンダリングブロックスクリプト(Jqueryライブラリファイルが正確)を特定しました。私(AJAXのイベントコールではnoob)は、非同期的に読み込むためにscriptタグ内に "async"タグを追加しました。

新しい問題が発生しました。初めてページを読み込むとすべて正常に動作します。しかし、私は非同期の方法ですべてのjavascriptファイルをロードしていたいくつかのランダムな後続のリロードのためにjavascriptを壊し、いくつかもディスクキャッシュからロードされていた。だから私はそれを "非同期"の方法でロードするのではなく、他の最適化の方法を見つけることに決めました。

関連する問題