knockout.validaton Remove validation rule
by jspradlin
HTML
<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.js"></script>
<script src="https://raw.github.com/ericmbarnard/Knockout-Validation/master/Src/knockout.validation.js"></script>
<script src="https://raw.github.com/carlschroedl/validatedviewmodel/master/ValidatedViewModel.js"></script>
<p>Fiddle for <a href="https://github.com/carlschroedl/validatedviewmodel/issues/1"
target="_blank">https://github.com/carlschroedl/validatedviewmodel/issues/1</a>
</p>
<div>Address Type:</div>
<input data-bind="checked: addressType" type="radio"
value="dhcp" name="addressType" id="radio-dhcp">
<label for="radio-dhcp">DHCP</label>
<br/>
<input data-bind="checked: addressType" type="radio" value="static" name="addressType"
id="radio-static">
<label for="radio-static">Static</label>
<br>
<div>using static: <span data-bind="text: usingStatic"></span>
</div>
<div data-bind="visible: usingStatic">Static IP:
<input data-bind="value: staticIp" type="text">
<br />Static Net Mask:
<input data-bind="value: staticNetmask" type="text">
<br />Static Gateway:
<input data-bind="value: staticGateway" type="text">
</div>
<button data-bind="click: handleClick">Test</button>
CSS
.error {
background-color: red;
color: white;
margin: 0 5px;
padding: 0 5px;
}
JavaScript
ko.validation.configure({
registerExtenders: true, //default is true
messagesOnModified: true, //default is true
insertMessages: true, //default is true
parseInputAttributes: true, //default is false
writeInputAttributes: true, //default is false
messageTemplate: null, //default is null
decorateElement: true, //default is false. Applies the .validationElement CSS class
errorElementClass: 'error',
errorMessageClass: 'error'
});
var settings = {
// TODO: verify that this is a good enough regex for IP and netmask
ipRegEx: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,
netMaskRegEx: "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}0"
}
var NetworkConfig = new ValidatedViewModel(function () {
var self = this;
self.addressType = ko.observable("static");
self.usingStatic = ko.computed(function () {
return self.addressType() == "static";
});
self.staticIp = ko.observable();
self.staticNetmask = ko.observable();
self.staticGateway = ko.observable();
// Validation constraints
self.constraintGroups = {
basic: {
addressType: {
required: true,
message: 'Address Type is required'
}
},
staticAddress: {
staticIp: {
required: {
message: 'IP Address is required'
},
pattern: {
message: 'Must be a valid IP address',
params: settings.ipRegEx
}
},
staticNetmask: {
required: {
message: 'Net Mask is required'
},
pattern: {
message: 'Must be a valid net mask',
params: settings.netMaskRegEx
}
},
staticGateway: {
required: {
message: 'Gateway Address is required'
},
...