2013-03-16 58 views
6

我將下面的規則添加到使用extension的現有jQuery驗證腳本中,但是此片段導致它斷開並且根本不驗證。我已經嘗試過所有可能的逗號組合,並且我也嘗試了使用mimetypes的accept方法,但迄今爲止沒有任何工作。如果我註釋掉這段代碼(以及之前的行註釋),代碼完美地工作,但添加它會導致代碼中斷。jQuery驗證擴展方法不起作用

Here's a jsFiddle與代碼原樣(不起作用),和here's one具有完全相同的代碼,除了片段被註釋掉(工作正常)。

的片段本身:

form1upload: { 
    extension: "jpg|jpeg|pdf|doc|docx|png" 
} 

的完整代碼:

jQuery(document).ready(function() { 
    jQuery("#grantapp").validate({ 
     errorClass:"errorlabels", 
     rules: { 
      form1name: "required", 
      form1building: "required", 
      form1position: "required", 
      form1phonex: "required", 
      form1besttime: "required", 
      form1projtitle: "required", 
      form1benefit: "required", 
      form1timeframe: "required", 
      form1relevance: "required", 
      form1description: "required", 
      form1amount: "required", 
      form1acceptchk: "required", 
      form1upload: { 
       extension: "jpg|jpeg|pdf|doc|docx|png" 
      } 
     }, 
     messages: { 
      form1name: "You must enter your name.", 
      form1building: "You must enter your building.", 
      form1position: "You must enter your position.", 
      form1phonex: "You must enter your phone extension.", 
      form1besttime: "You must enter the best time to contact you.", 
      form1projtitle: "You must give your project a title.", 
      form1benefit: "You must enter the number of students who will benefit.", 
      form1timeframe: "You must enter a time frame for this project.", 
      form1relevance: "<br />You must state how this project is relevant to education.", 
      form1description: "<br />You must provide a description of your project.", 
      form1amount: "You must enter a requested amount.", 
      form1acceptchk: "<span style=\"position:relative;top:-10px;\">You must accept the terms.</span>", 
      form1upload: "You may not upload this type of file." 
     }, 
     errorPlacement: function (error, element) { 
      if (element.attr("name") == "form1acceptchk") { 
       error.insertAfter("#tbl1"); 
      } else { 
       error.insertAfter(element); 
      } 
     } 
    }); 
}); 
+0

的語法看起來是正確的給我。 – 2013-03-16 00:33:28

+0

這就是我的想法。我已經反覆檢查過,看起來對我很好。具體的擴展部分看起來也是正確的,[根據文檔](http://docs.jquery.com/Plugins/Validation/CustomMethods/extension#extension)。 – vaindil 2013-03-16 00:35:19

+0

經過多個版本的插件測試,它確實顯得破損http://jsfiddle.net/ult_combo/4jMHZ/ – 2013-03-16 00:42:49

回答

15

這是因爲the extension rule/method是不是默認的jQuery驗證插件的一部分。

如果您想使用extension規則,則必須包含jQuery Validate插件的additional-methods.js file

這似乎是現在的工作......

http://jsfiddle.net/tMRer/

+0

沒有意識到這是一件事情。感謝您的幫助! – vaindil 2013-03-16 05:50:23

+0

注意:庫已經更新並且additional-methods.js已經被分割。尋找extension.js文件。 – Marcel 2018-02-09 17:23:12

+0

@Marcel,[你在哪裏看到的?](https://jqueryvalidation.org)我想你可能會混淆這樣一個事實,即開發人員也會將GitHub上的所有方法作爲單獨的文件提供。否則,['extension'仍然是'additional-methods.js'文件的一部分](https://cdn.jsdelivr.net/npm/[email protected]/dist/additional-methods.js)。 – Sparky 2018-02-09 17:46:58