2013-02-19 10 views
8

में चेकबॉक्स को कैसे सत्यापित करें मैं knockout.js और knockout.validation प्लगइन का उपयोग कर रहा हूं। मैं चेकबॉक्स को सत्यापन करने की कोशिश कर रहा हूं, अगर इसकी वैधता अन्यथा अमान्य की तुलना में चेक किया गया है। इस के लिए तो मैं नॉकआउट में एक कस्टम valdation विशेषता बना:knockout

Example Fiddle

ko.validation.rule['checked'] = { 
    validator: function (value) { 
     if (!value) { 
      return false; 
     } 
     return true; 
    } 
}; 

और मेरे विचार मॉडल है:

function VM() 
{ 
    var self = this; 
    self.Approve = ko.observable(false).extend({ 
     checked: { message: 'Approval required' } 
    }); 
    self.Errors = ko.validation.group(self); 
    self.Validate = function(){ 
     if(self.Errors().length > 0) 
     self.Errors.showAllMessages(); 
    }; 
} 

लेकिन सत्यापन नहीं कर रहा है। क्या कोई मुझे बता सकता है कि मैं यहाँ क्या गलत कर रहा हूं?

उत्तर

8

अपने वर्तमान दृष्टिकोण के साथ कुछ समस्याएं हैं:

  1. आप याद आती है ko.validation.rule टाइप किया है यह होना चाहिए इससे पहले कि आप पहली कोशिश ko.validation.rules
  2. कस्टम नियम परिभाषा और ko.validation.registerExtenders(); के फोन करने से किया जाना चाहिए कस्टम सत्यापनकर्ता का उपयोग करने के लिए।
  3. आदेश में मान्यता दिखाया गया है आप validationMessage बंधन के साथ कहीं न कहीं यह बाध्य करने के लिए की जरूरत है:

    <span data-bind='validationMessage: Approve'></span> 
    

तो तय स्क्रिप्ट:

ko.validation.rules['checked'] = { 
    validator: function (value) { 
     console.log(value); 
     if (!value) { 
      return false; 
     } 
     return true; 
    } 
}; 

ko.validation.registerExtenders(); 

function VM() 
{ 
    var self = this; 
    self.Approve = ko.observable(false).extend({ 
    checked: { message: 'Approval required' } 
    }); 

    self.Errors = ko.validation.group(self); 

    self.Validate = function(){  
    if(self.Errors().length > 0) 
     self.Errors.showAllMessages(); 
    }; 
} 

ko.applyBindings(new VM()); 

और HTML:

<input type="checkbox" data-bind="checked: Approve" /> 
<span data-bind='validationMessage: Approve'></span> 
<button type="button" data-bind="click: Validate">Submit</button> 

आप इसे आजमा सकते हैं ere: Demo

3

तुम भी बराबर देशी सत्यापनकर्ता इस्तेमाल कर सकते हैं:

self.Approve = ko.observable(false).extend({ 
    equal: { params: true, message: 'check must be ticked' } 
    }); 
संबंधित मुद्दे