J'utilise Durandandal, qui à son tour exploite de knock-out.
Je veux être capable de Fiddle P> Le violon semble se comporter légèrement différent de ma "solution de travail", mais cela ne fait toujours pas ce que je veux / m'attendre à ce que je veux. P> p>
self.userInfo = {
IdOrPassportNumber: ko.observable().extend({
maxLength: self.maxLength(),
minlength: self.maxLength()
}),
IdType: ko.observable()
},
self.maxLength = ko.observable();
self.userInfo.IdType.subscribe(function (value) {
if (value === 'Passport') {
self.maxLength(15)
} else {
self.maxLength(3)
}
});
3 Réponses :
Voici la solution qui a fonctionné pour moi:
J'ai utilisé le Validation personnalisée < / a> fonctionnalité, plus spécifiquement la Validation personnalisée à usage unique car ce n'est pas réutilisé ailleurs. p>
Comme une note latérale. J'ai remarqué que l'ordre des validations importe également, de sorte que vous souhaitez que votre validateur personnalisé (ou tout autre) à ce sujet se déclenche en premier, en leur commandant en conséquence.
N'est-il pas préférable d'utiliser deux champs différents avec une validation fixe et de modifier la liaison sur la page
var idorpassword = id () || mot de passe () code>.
considère que ceci où SouthAfricanidnumber est une validation personnalisée qui utilise regex. p> p>
Bienvenue à :), mais voyez ma réponse acceptée. (Je ne suis plus sur le projet. Mais je vais garder à l'esprit pour l'avenir)
+1 Pour encourager spacerogue code> avec son premier post.
Vous étiez si proche :-)
Vous devez fournir l'observable lui-même, pas la valeur non emballée. Donc simplement supprimer le () code> à partir de
maxlength () code> - la bibliothèque de validation va automatiquement le déballer pour vous.
zipOrPostal: KnockoutObservable<string> = ko.observable('').extend(
{
required: true,
pattern: ko.pureComputed(function() {
return self.countryCode() === 'US' ? '^\\d{5}(?:[-\\s]\\d{4})?$' : ''
})
});
Pour quelqu'un d'autre lisant ceci. Je suis incapable de tester cela contre cette situation exacte que j'avais à ce stade, (plus sur ce projet). Je préfère la solution de Simon_weaver comme solution acceptée et la marquera comme telle.
Merci. Je dois dire que cela ne m'a eu lieu qu'aujourd'hui que je pourrais être capable de passer un paramètre observable comme un paramètre à une règle, et je me suis très excité - alors réalisa peut-être que cela pourrait peut-être ne pas fonctionner - mais je suis à nouveau excité qu'il semble que cela semble Très bien :-) D'après ce que je me souviens, il n'est pas clairement documenté, mais c'est très facile si vous savez déjà comment utiliser Knockout et ajoute une grande flexibilité.
Pouvez-vous utiliser CDNJS.com pour saisir le plugin de validation Knockout ...
Terminé. +1 ps très cool site. Bookmarked à coup sûr :)