2013-03-08 91 views
1

我正在使用jQuery Validate Plugin驗證我網站上的表單。我想更改默認的minlength消息以顯示該字段中的字符數仍然需要,並且此數字隨用戶在input字段中鍵入而更改。jQuery驗證插件 - 在錯誤消息中顯示最小長度字符「

例如,如果minlength規則是15個字符,並且有在現場2個字符,該錯誤信息會讀"Please enter at least 13 more characters."

爲了簡單起見,這裏是我的jQuery。 所有的代碼放在一起時根據需要下面不起作用,所以我需要一個沒有工作

這裏的解決方案是小提琴:http://jsfiddle.net/ac2T2/1/

這裏是我的代碼:

$('#contactForm').validate({ 
    rules: { 
     contactName: { 
      minlength: 15 
     } 
    } 
}); 

我會喜歡添加一些類似如下的代碼:

var numOfCharactersToGo = 15 - parseInt($('contactName').val().length); 

然後在理論上我c烏爾德改變我的默認jQuery的消息minlength如下所示:

jQuery.extend(jQuery.validator.messages, { 
    minlength: jQuery.validator.format('Please enter at least ' + numOfCharactersToGo + ' more characters.') 
}); 
+0

那麼,什麼是問題/問題? – Chad 2013-03-08 19:46:31

+0

我上面做了什麼不起作用。 – adamdehaven 2013-03-08 19:47:28

+1

你會介意爲你的代碼提供一個快速的jsfiddle嗎? – darshanags 2013-03-08 19:55:18

回答

2

感謝@斯帕克的答案帶着我在正確的方向,這裏是萬一有人最後的答案也不要這份相同的功能。

這裏的小提琴:http://jsfiddle.net/ZhRGA/8/

HTML

<form id="myform"> 
    <input type="text" name="field1" id="field1" /> 
    <br/> 
    <input type="submit" /> 
</form> 

jQuery的

$(document).ready(function() { 
var minChar = 15; 
    $('#myform').validate({ // initialize the plugin 
     rules: { 
      field1: { 
       required: true, 
       minlength: minChar 
      } 
     }, 
     messages: { 
      field1: { 
       minlength: function() { 
        return [ 
         (minChar - parseInt($('#field1').val().length)) + 
         ' more characters to go.']; 

       } 
      } 
     } 
    }); 
}); 
1

不能動態地改變0​​或messages插件已經初始化形式後,不使用內置的方法對這樣的變化。

只有一種方式,我知道你可以在哪裏動態在初始化後覆蓋任何規則和消息。這與the rules('add') method

$('#field').on('keyup', function() { 
    current = 15 - parseInt($(this).val().length); 
    $(this).rules('add', { 
     minlength: 15, 
     messages: { 
      minlength: current + " characters to go" 
     } 
    }); 
}); 

你需要打電話給你的keyup事件處理函數或任何函數內部上面你使用動態計數的字符。該演示很粗糙,並且需要克服一些問題,但它表明它可能可能是

非常粗糙的DEMO:http://jsfiddle.net/ZhRGA/5/

+0

這似乎工作 - 我將它添加到這個小提琴:http://jsfiddle.net/ac2T2/1/但是,當它達到8個字符,它會因爲某種原因消失?想法? – adamdehaven 2013-03-08 20:24:26

+0

@AdamD,就像我說的那樣,它有一些問題。該方法從未打算用於此目的。但在這種情況下,它似乎是我的邏輯/數學......就像你正在減去當前規則的剩餘長度。它總是在中途失敗。 – Sparky 2013-03-08 20:28:23

+0

@AdamD,我在方法之上聲明它。 – Sparky 2013-03-08 20:32:33