2012-01-24 8 views
0

jqueryの検証プラグインを使用してフォームを検証しています。私は検証したくない1つのフィールドを持っていますが、何らかの形でそれが検証され、 "5文字以内で入力してください"というエラーメッセージが表示されます。ブラウザがフォーカスを取得するたびにJQueryの検証がトリガーされます

検証されるフィールドはtype = fileフィールドで、私はFynework jQuery MultiFormプラグインと一緒に使用します。 5文字以上の名前のファイルを選択したときにのみ、フォームを送信しようとすると検証されません(短い名前は長く働いていないと思います)。

バリデーションされたフィールドに.ignoreクラスを追加しようとしましたが、validat()では動作の違いではなく無視ルールが追加されました。

何が問題なのですか?

function addNewTicketValidation(){ 
        $("#newticketform").validate({ 
          ignore: ".ignore", 
          errorContainer: "#messageBox1", 
          errorLabelContainer: "#messageBox1 ul", 
          wrapper: "li", 
          debug:true, 
          rules: {  
          title: "required",         
          description: "required"                      
          }, 
          messages: { 
           title: "Titel saknas", 
           description: "Beskrivning saknas" 
          } 
          }); 
        } 

     $("#newticketmanu").live('click',function(event){ 
      $("#adminarea").load("http://" + hostname + "/" + compdir + "/modules/core/newticket/newticket.php", function(){ 
        $('#my_file_element').MultiFile();      
        addNewTicketValidation(); 

      }); 
     }); 

私のフォームは:

<form method="post" enctype="multipart/form-data" id="newticketform" class="MultiFile-intercepted" novalidate="novalidate"> 
     <input type="hidden" value="2000000" name="MAX_FILE_SIZE"> 
     <label for="title">Rubrik</label> <input type="text" name="title" id="title"><br><br> 
     <label for="description">Beskrivning</label> <textarea name="description" id="description" cols="50" rows="15"></textarea><br> 

     <div id="my_file_element_wrap" class="MultiFile-wrap"><input type="file" maxlength="5" name="file[]" id="my_file_element" class="multi ignore MultiFile-applied" value=""><div id="my_file_element_wrap_list" class="MultiFile-list"></div></div> 
     <div id="files_list"></div> 
     <input type="submit" value="Upload" name="upload"> 
</form> 

問題は何をすることができここで

は私validat()メソッドあり、また、私は、そのメソッドを追加した時点を含めますそれを修正する方法は?

ありがとうございます!

答えて

1

ファイル入力からmaxlength = "5"属性を削除します。これはバリデーションプラグインによって読み込まれ、ルールとして追加されます(ここでは812行目https://github.com/jzaefferer/jquery-validation/blob/1.9.0/jquery.validate.js)。仕様をチェックすると(http://www.blooberry.com/indexdot/html/tagpages/i/inputfile.htm)、最大長は依然としてファイル入力時でさえ文字長を意味するので、ユーザーを5ファイルに制限したい場合アップロードするには、これを達成するための他の方法が必要です。

+0

ありがとうございます!そうですか。だから問題は、MultiFileが属性としてmaxlengthを使用するので、プラグイン間に競合があることです。しかし、バリデーションプラグインはアトリビュートを気にしていますが、私はそれが「名前」のみを使用していると思いましたか?私はmaxlengthを削除したときに動作しました。根本的な原因は確かです。 – Nicsoft

+0

実際の問題を解決するために、代わりにクラスを使用することができます。例えば。 class = 'max-2'はファイルの最大数を2に設定します。これはmaxlength属性と競合しません。 – Nicsoft