2017-02-28 125 views
0

我試圖添加驗證了電話號碼,條件驗證在淘汰賽

我需要它然而需要我只想強制執行模式,如果該國是美國 這是我有,但它失敗當我有加拿大或任何其他國家選擇

self.phone = ko.observable().extend({ 
     required: { 
      onlyIf: function() { 
       return self.country() == "US"; 
      } 
     }, 

     pattern: { 
      message: 'Please enter a valid phone number in ###-###-#### format', 
      params: /^(\d{3}-\d{3}-\d{4})$/ 
     } 
    }); 

回答

2

很簡單。只需添加相同onlyIf條件pattern驗證

function ViewModel() { 
 
    var self = this; 
 
    self.country = ko.observable(); 
 
    self.phone = ko.observable().extend({ 
 
    required: true, 
 

 
    pattern: { 
 
     message: 'Please enter a valid phone number in ###-###-#### format', 
 
     params: /^(\d{3}-\d{3}-\d{4})$/, 
 
     onlyIf: function() { 
 
     return self.country() == "US"; 
 
     } 
 
    } 
 
    }); 
 
    
 
    self.errors = ko.validation.group(self); 
 
    
 
    self.isValid = function() { self.errors.showAllMessages() } 
 
    self.clear = function() { self.errors.showAllMessages(false) } 
 
} 
 

 
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.3/knockout.validation.min.js"></script> 
 
Country <input data-bind="textInput: country"><br><br> 
 
Phone <input data-bind="textInput: phone"><br><br> 
 
<button data-bind="click: isValid">Show Errors</button> 
 
<button data-bind="click: clear">Clear</button>

+0

不大,如果說我選擇加拿大,我不想要的東西,我把要針對模式例如比較,如果我型加我希望我的號碼可以像42-526-45a一樣。 –

+0

基本上我不能有一個空白 –

+0

更新。現在'電話'是必需的,但模式只適用於美國 – Jag