2012-01-25 30 views
4

我創建了檢查十六進制顏色自定義的jQuery驗證規則:jQuery的不顯眼的自定義錯誤消息

$.validator.addMethod("hexcolor", function (value, element) { 
    return this.optional(element) || /^(#){1}([a-fA-F0-9]){6}$/.test(value); 
}, "Please insert a valid hex color (#______)"); 

$.validator.unobtrusive.adapters.add("hexcolor", function (options) { 
    options.rules['hexcolor'] = options.params; 
    options.messages['hexcolor'] = options.message; 
}); 

當我創建我的文本框,我有這樣的事情

@Html.TextBoxFor(p => p.Color, new { data_val = "true", data_val_hexcolor = "Error message" }) 

我有兩個問題/問題:

  1. 當該值無效時,錯誤消息是「錯誤消息」而不是「Please in sert一個有效的十六進制顏色(#_ _ _ _ _ _)「

  2. 我在其他一些例子中看到了像這樣創建的錯誤消息。

    jQuery.validator.addMethod( 「maxWords」,函數(值,元素,則params){ 返回this.optional(元件)|| stripHtml(值).match(/ \ B \ W + \ B/G) .length < params; },jQuery.validator.format(「Please enter {0} words or less。」));

將字符串佔位符「{0} {1}」等替換爲參數的值?

回答

0

你的問題對我來說不是很清楚。但是,如果您嘗試編寫接受參數的自定義錯誤消息。這是如何實現的:

jQuery.validator.addMethod('validdate', function (value, element, 
    params) { 
      value = model.date(); 
      if (value === '') { 
       return false; 
      } 
      var range = JSON.parse(params); 
      return value > range[0] && value < range[1]; 
     }, $.format('You can only specify date between {0} and {1}')); 
相關問題