Tengo dos mensajes de error, pero solo se muestra uno según el valor del vendor . El valor inicial para el vendor cuando se inicia la aplicación es nulo. Después de eso, según la entrada del usuario, se cambia el valor del vendor . Sin embargo, el mensaje de error de validación dice "Se requiere entrada" independientemente del valor del vendor , incluso se cumple la condición. Me parece que el valor de self.agreement no está actualizado.
Miré aquí y aquí , y apliqué las técnicas, pero ninguna funcionó para mí.
índice.js
self.agreement = (vendor == "BAS")? ko.observable().extend({ required:{message:"Should be 9 digit "}, pattern:{ params:/^\d{9}$/ } }):ko.observable().extend({ required:{message:"Input is required", onlyIf:function(){return !self.sample()}} });índice.cshtml
<input data-bind="init, value: agreement" class="form-control" type="text" value="@(Model.Ani)" />Creo que estás re-evaluando el observable.
ko.observable().extend({}):ko.observable().extend({})Pruébalo así en su lugar
ko.observable().extend({}).extend({}).extend({})......Aquí hay una muestra.
Price: local.Price.extend({ required: true }).extend({ number: true }).extend({ pattern: '(\$\s*)?(([1-9]\d*)(\.\d+)?|0?\.\d*[1-9]\d*)' })