簡體   English   中英

在jQuery驗證自定義規則中自定義消息

[英]Customizing the message in a jQuery validate custom rule

我有一個名為fiftyCents()的自定義jQuery驗證規則,其中有兩個規則:

  1. 如果商品是免費的,則您可以以0.00美元的價格“購買”該商品,也可以支付超過0.50美元的費用。
  2. 如果項目不是免費的,則他們必須至少支付指定的費用(存儲在隱藏的cachedValue輸入字段中)。

這就是我的兩個驗證錯誤消息。 我將它們添加到fiftyCents()遇到的問題是,我只能弄清楚如何將其評估為true / false,如果為false,則顯示一條消息,例如, "Amount must be $0.00 OR greater than $0.50."

JSfiddle (也是下面的代碼)的解決方案似乎是制作一個message對象,該對象可以是fiftyCents()函數fiftyCents()函數的一部分。 但是,我不知道如何將其與評估true/false一起return 有什么想法嗎?

JS:

$('button').click(function(){
  $('form').validate().form();
});
$.validator.addMethod("fiftyCents", function(value) {

  var cachedValue=$('.purchaseModalAmtPaidCached').val();
  var value = $('.purchaseModalAmtPaid').val();
  var message="Amount must be $0.00 OR greater than $0.50.";
  if(cachedValue>0) message='Amount must be at least'+cachedValue+'.';
  return cachedValue<=value && (value==0 || (0.51<=value && value<=10000));
}, message);   

$.validator.classRuleSettings.purchaseModalAmtPaid = { fiftyCents: true };

HTML:

 <form>
  <input  class="purchaseModalPassword required" minlength="8" type="password"name="password" value="dddddddv" title="Please enter a valid password"  />
  <input type="text"  title="Amount must be $0.00 OR greater than $0.50" 
  class="required purchaseModalAmtPaid" name="amt_paid" value="" />
  <input type="hidden" class='purchaseModalAmtPaidCached required' name="AmtPaidCached" value="0.00" /> 
  <button type='button'>Buy</button>
 </form>​

好吧,我回答了我自己的問題。 我最終要做的是將這兩個規則拆分成自己的自定義方法。 在調用任一自定義方法之前,我先使用了if/else來確定應遵循這兩者中的哪一個。

這是下面的JSFiddle和代碼:

JS:

$('button').click(function(){
$('form').validate().form();

});

var params=$('.purchaseModalAmtPaidCached').val();                   
if(params>0){      
  $.validator.addMethod("AmountOrGreater", function(value, element, params) {
  console.log('amountOrGreater'+params[0]); 
  return params[0]<=value && (value==0 || (0.51<=value && value<=10000));
  }, $.validator.format("Amount must be at least {0}."));
  $.validator.classRuleSettings.purchaseModalAmtPaid = { AmountOrGreater: params };                       
} 
else{ 
  $.validator.addMethod("fiftyCents", function(value, element, params) {
  console.log('fiftyCents'+params[0]);
  return params[0]<=value && (value==0 || (0.51<=value && value<=10000));
  }, "Amount must be $0.00 OR greater than $0.50.");  
  $.validator.classRuleSettings.purchaseModalAmtPaid = { fiftyCents: params };  
} //else

HTML:

 <form>
  <input  class="purchaseModalPassword required" minlength="8" type="password" name="password" value="dddddddv" title="Please enter a valid password"  />
  <input type="text"   
class="required purchaseModalAmtPaid" name="amt_paid" value=""  /> 
  <input type="hidden" class='purchaseModalAmtPaidCached required' name="AmtPaidCached" value="0.00" /> 
  <button type='button'>Buy</button>
</form>​

注意:與jQuery配合使用的HTML的一個關鍵是,如果您為輸入提供一個title=''屬性,那么將始終使用該標題,從而覆蓋自定義規則中的消息。 在我的情況下,這很重要b / c有兩個自定義規則/消息,並且我無法在呈現HTML之前預先確定用戶會看到哪一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM