2010-03-16 38 views

回答

617

添加該代碼在一個單獨的文件/腳本包括驗證插件後覆蓋的消息,編輯在將:)

jQuery.extend(jQuery.validator.messages, { 
    required: "This field is required.", 
    remote: "Please fix this field.", 
    email: "Please enter a valid email address.", 
    url: "Please enter a valid URL.", 
    date: "Please enter a valid date.", 
    dateISO: "Please enter a valid date (ISO).", 
    number: "Please enter a valid number.", 
    digits: "Please enter only digits.", 
    creditcard: "Please enter a valid credit card number.", 
    equalTo: "Please enter the same value again.", 
    accept: "Please enter a value with a valid extension.", 
    maxlength: jQuery.validator.format("Please enter no more than {0} characters."), 
    minlength: jQuery.validator.format("Please enter at least {0} characters."), 
    rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."), 
    range: jQuery.validator.format("Please enter a value between {0} and {1}."), 
    max: jQuery.validator.format("Please enter a value less than or equal to {0}."), 
    min: jQuery.validator.format("Please enter a value greater than or equal to {0}.") 
}); 
+3

這是一件好事。還有另一種方法可以做到嗎? – 2010-03-16 18:40:28

+0

@Kevin - 不是真的......你必須至少設置變量,這就是所有這些。您可以在頁面中使用另一個'.js',在插件後面運行腳本來設置消息。 – 2010-03-16 18:47:30

+28

工作很好。我剛剛添加了: $ .extend($。validator.messages,{ required:「Required」 }); – 2011-07-01 21:28:08

6

而不是改變插件的源代碼,你可以包含一個額外的js文件中像在下載本地化文件夾中的格式,幷包括一個裝載validation.js

jQuery.extend(jQuery.validator.messages, { 
    required: ..., 
    maxlength: jQuery.validator.format(...), 
    ... 
}); 
+0

它不是。它在技術上與你的答案相同。我將我的評論發佈到您的答案的舊版本。然後寫我自己的答案。所有沒有連續重新加載頁面。因此,我只在看到您的評論時纔看到您編輯的答案。 – jitter 2010-03-16 18:35:58

188

後,您可以在調用validate指定自己的消息。起重和縮寫這段代碼從記住驗證插件文檔(http://jquery.bassistance.de/validate/demo/milk/),你可以很容易地指定自己的消息中所使用的牛奶註冊表格:

var validator = $("#signupform").validate({ 
    rules: { 
     firstname: "required", 
     lastname: "required", 
     username: { 
      required: true, 
      minlength: 2, 
      remote: "users.php" 
     } 
    }, 
    messages: { 
     firstname: "Enter your firstname", 
     lastname: "Enter your lastname", 
     username: { 
      required: "Enter a username", 
      minlength: jQuery.format("Enter at least {0} characters"), 
      remote: jQuery.format("{0} is already in use") 
     } 
    } 
} 

用於驗證完整的API(...):http://jqueryvalidation.org/validate

+5

感謝您的意見,但如果您仔細閱讀問題,我會問如何更改默認設置。我知道我可以指定唯一的消息。 – 2010-12-08 02:27:22

+2

我站好了,對不起。 – Steven 2010-12-16 14:04:14

+36

只是投入 - 這對我有幫助,即使不是針對問題的目標。 – 2011-12-29 19:53:05

21

另一種可能的解決方案是遍歷字段,向每個字段添加相同的錯誤消息。

$('.required').each(function(index) { 
    $(this).rules("add", { 
    messages: { 
     required: "Custom error message." 
    } 
    }); 
}); 
+1

這個解決方案正是我正在尋找... ...在我的每個表單字段都有一個標籤,所以我找到了相應的標籤並在信息前添加了它,所以最後它說「名字是必需的」。非常好,Ganske。 – tjans 2013-01-09 15:10:25

+1

+1雖然所有其他答案都是有效的,這是我正在尋找的語法。 – 2013-03-04 12:53:18

+0

兩次!這兩個相同的答案幫助了我:D – 2013-05-17 06:00:34

74

這爲我工作:

$.validator.messages.required = 'required'; 
+0

$ .validator.messages.maxlength = jQuery.validator.format(「請輸入不超過{0}個字符。」);不起作用。我建議使用Nick Cravers解決方案。 – 2014-05-21 11:44:57

+1

@VidarVestnes該解決方案也適用於您的場景。您只需指定格式字符串,然後該插件執行其他操作:'$ .validator.messages.maxlength =「請輸入不多於{0}個字符。」;' – rusmus 2014-09-29 11:37:27

+0

$ .validator.messages.maxlength:jQuery.validator。格式(...);將工作... – 2015-07-30 09:09:55

2

要刪除所有默認的錯誤消息使用

$.validator.messages.required = ""; 
5

最新版本有一些不錯的在線東西可以做。

如果它是一個簡單的輸入框,你可以添加屬性data-validation-error-msg這樣的 -

data-validation-error-msg="Invalid Regex" 

如果你需要的東西重一點,你可以完全自定義,使用可變事情被傳遞到所有的值驗證功能。參考此鏈接的全部細節 - https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable

+1

這是一個不同於OP詢問的jQuery驗證插件的插件。這不是一個不錯的選擇,特別是如果將HTML中的驗證相關數據(規則,消息)置於呼籲之列(jQuery驗證插件採取相反的方式,所有這些使用Javascript)。爲了提供記錄的另一種選擇,Parsley.js是另一個使用很多且功能全面的驗證插件,它依賴於HTML屬性。 – 2015-03-20 21:00:36

-1

,而不是這些自定義錯誤消息,我們可以指定文本字段的類型。

例:字段的設定類型中爲type =「電子郵件」

然後插件將識別字段和正確驗證。

+0

他並沒有要求驗證它是否正確,他要求重寫消息.... 「我只是想重寫錯誤消息,使其更適合我的應用程序」 – Benoit 2017-02-21 22:12:00

34

這爲我工作:

// Change default JQuery validation Messages. 
$("#addnewcadidateform").validate({ 
     rules: { 
      firstname: "required", 
      lastname: "required", 
      email: "required email", 
     }, 
     messages: { 
      firstname: "Enter your First Name", 
      lastname: "Enter your Last Name", 
      email: { 
       required: "Enter your Email", 
       email: "Please enter a valid email address.", 
      } 
     } 
    }) 
+0

請注意,即使此答案適用於jqueryValidation和不是jqueryFileUpload,'$()。fileupload'函數中還有'messages'選項。 – 2014-10-09 07:26:15

5

@Josh:您可以從資源包

<script type="text/javascript"> 
    $.validator.messages.number = '@Html.Raw(@Resources.General.ErrorMessageNotANumber)'; 
</script> 

擴大與翻譯的消息解決方案。如果你把這個代碼的一部分到你的_layout。CSHTML(MVC)它,因爲我們已經在使用jQuery的適用於所有的意見

28

,我們可以讓網頁設計師添加自定義消息的標記,而不是代碼:

<input ... data-msg-required="my message" ... 

或者更一般使用上的所有字段一個短數據msg屬性的解決方案:

<form id="form1"> 
    <input type="text" id="firstName" name="firstName" 
     data-msg="Please enter your first name" /> 
    <br /> 
    <input type="text" id="lastName" name="lastName" 
     data-msg="Please enter your last name" /> 
    <br /> 
    <input type="submit" /> 
</form> 

和代碼,然後包含這樣的事情:

function getMsg(selector) { 
    return $(selector).attr('data-msg'); 
} 

$('#form1').validate({ 
    // ... 
    messages: { 
     firstName: getMsg('#firstName'), 
     lastName: getMsg('#lastName') 
    } 
    // ... 
}); 
+0

這是一個很好的策略,特別是如果您需要一個不在您的js文件中的動態消息集... – 2015-07-01 20:02:26

+0

@ user1207577,是的,我們可以設置自定義消息,但我們如何顯示最小長度和最大長度消息。我的意思是如果我們設置自定義,那麼最小和最大消息不會顯示。任何想法? – 2017-09-10 03:09:03

3

我從來沒有想過這會很容易,我正在開發一個項目來處理這種驗證。

下面的答案對於想要毫不費力地更改驗證消息的人很有幫助。

以下方法使用「佔位符名稱」代替「此字段」。

您可以輕鬆地修改的東西

// Jquery Validation 
    $('.js-validation').each(function(){ 

     //Validation Error Messages 

     var validationObjectArray = []; 

     var validationMessages = {}; 

     $(this).find('input,select').each(function(){ // add more type hear 

      var singleElementMessages = {}; 

      var fieldName = $(this).attr('name'); 

      if(!fieldName){ //field Name is not defined continue ; 
       return true; 
      } 


      // If attr data-error-field-name is given give it a priority , and then to placeholder and lastly a simple text 

      var fieldPlaceholderName = $(this).data('error-field-name') || $(this).attr('placeholder') || "This Field"; 

      if($(this).prop('required')){ 

       singleElementMessages['required'] = $(this).data('error-required-message') || $(this).data('error-message') || fieldPlaceholderName + " is required"; 

      } 

      if($(this).attr('type') == 'email'){ 

       singleElementMessages['email'] = $(this).data('error-email-message') || $(this).data('error-message') || "Enter valid email in "+fieldPlaceholderName; 

      }  



      validationMessages[fieldName] = singleElementMessages; 

     }); 


     $(this).validate({ 
      errorClass : "error-message", 
      errorElement : "div", 
      messages  : validationMessages 
     }); 
    });