5

80 を超える js ファイルを含む大規模な Rails プロジェクトがあり、Chrome のコンソールに次のメッセージが表示され続けます。

Nothing selected, can't validate, returning nothing. 

しかし、何がそのメッセージを投げているのかわかりません。検証プラグインを使用しているすべてのフォームは、想定どおりに正しく検証されているようです。

どのファイルまたは関数が実際にこのメッセージを表示させているかを確認するにはどうすればよいですか?

検証プラグインの関連部分は次のとおりです。

  // if nothing is selected, return nothing; can't chain anyway
  if ( !this.length ) {
    if ( options && options.debug && window.console ) {
      console.warn( "Nothing selected, can't validate, returning nothing." );
    }
    return;
  }

存在しないセレクターで validate() が呼び出されているようですが、プロジェクト全体の何百もの場所で validate() を呼び出しているため、validate() への正確な呼び出しを追跡する方法を探しています。方法。

4

3 に答える 3

0

これが、問題の原因となっているコードを最終的に追跡するために行ったことです。

jquery.validate.min.js ファイルを次のように編集しました。

  if ( !this.length ) {
    if ( options && options.debug && window.console ) {
      console.warn(this.selector); //this showed the call to validate() that was the problem
      console.warn( "Nothing selected, can't validate, returning nothing." );
    }
    return;
  }

コンソールを見ると、適切なファイルが見つかりました。これには (CoffeeScript で):

  $('body.drawing_categories #yield form').validate
    debug: true,
    submitHandler: (form) ->
      add_addl_drawings = $('<input/>').attr(
        type: 'hidden',
        id: 'add_addl_drawings'
        name: 'add_addl_drawings'
      ).appendTo(form)

そのdebug: true部分が問題でした。取り出すと、コンソールの警告は消えました。

このソリューションに導いてくれた Sparky に感謝します。

于 2013-10-23T19:35:09.180 に答える