javascript - knockout validation live
Validación de Knockout: cómo mostrar un solo mensaje de error (1)
O bien, ¿hay alguna manera de elegir y elegir campos de mi Modelo de Vista y ponerlos en su propio grupo de validación (pero también mantenerlos en el grupo más grande)?
Sí, puedes definir tantos grupos como quieras; y observables pueden estar en múltiples grupos de validación.
Entonces, por ejemplo, supongamos que su grupo de validación para todos los errores en su modelo de vista es el siguiente:
ViewModel.errors = ko.validation.group(ViewModel);
También puede agregar grupos individuales como este:
ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]);
Además, al llamar a showAllMessages
en un grupo de validación, solo está mostrando los mensajes para los observables dentro de ese grupo. ViewModel.saveErrors.showAllMessages()
solo mostrará los mensajes de validación para requiredForSave1
y requiredForSave2
Espero que ayude
Verifico mi modelo de vista en enviar para validación como se describe aquí en SO, en realidad .
Mi formulario tiene una acción de "Guardar progreso" además de la acción "Enviar". Se envía al servidor de la misma manera, pero tiene menos campos obligatorios.
Me gustaría mantener los cuatro campos absolutamente obligatorios donde se encuentran actualmente en el Modelo de Vista ... es decir, mantenerlos en el grupo de validación más grande para enviarlos.
¿Hay alguna manera en la validación de Knockout de mostrar simplemente mensajes específicos de la misma manera que showAllMessages()
para el grupo de validación completo? showMessage()
la fuente, pero no encontré nada como showMessage()
adjunto a un solo error.
O bien, ¿hay alguna manera de elegir y elegir campos de mi Modelo de Vista y ponerlos en su propio grupo de validación (pero también mantenerlos en el grupo más grande)?
Entonces, como un ejemplo:
var ViewModel = ko.validatedObservable({
requiredForSave1: ko.observable().extend({ required: true }),
requiredForSave2: ko.observable().extend({ required: true }),
requiredForSubmit: ko.observable().extend({ required: true })
// ... and many more.
});
$(''#sumbit'').on(''click'', function(){
//check the entire validation group
if ( ViewModel.errors().length === 0 ){
doSubmit();
}
else{
ViewModel.errors.showAllMessages();
}
});
$(''#save'').on(''click'', function(){
//check only part of the validation group
if ( ViewModel.requiredForSave1.isValid() &&
ViewModel.requiredForSave2.isValid() ){
doSubmit();
}
else{
//show only one or two specific validation messages.
//???
}
});
¿Hay alguna manera de completar ese último bloque o debería tomar un enfoque diferente?
Gracias