knockout knockout.js customization knockout-validation

knockout.js - knockout - Establezca un mensaje de error personalizado utilizando las reglas nativas del complemento de validaciĆ³n de eliminaciĆ³n directa



knockout numeric (3)

Estoy usando Asp.net MVC3 y la biblioteca de knockoutjs. Necesito hacer alguna validación del lado del cliente. Estoy explorando el complemento de validación de nocaut.

Así que declaro el siguiente valor de ko.observable en mi código js:

var numberValue = ko.observable().extend({ number: true })

Esta es mi parte de vista:

<input data-bind = "value: numberValue " />

Cuando el usuario ingresa un valor que no es un número, se muestra un mensaje de error: "Ingrese un número". ¿Puedo mostrar un mensaje de error diferente pero aún uso las reglas nativas? No quiero escribir lógica de validación personalizada solo para esto. Cualquier ayuda con algún ejemplo de trabajo será muy apreciada. ¡Gracias!


Aquí está el código que crea los extensores de validación.

addExtender: function (ruleName) { ko.extenders[ruleName] = function (observable, params) { //params can come in a few flavors // 1. Just the params to be passed to the validator // 2. An object containing the Message to be used and the Params to pass to the validator // // Example: // var test = ko.observable(3).extend({ // max: { // message: ''This special field has a Max of {0}'', // params: 2 // } // )}; // if (params.message) { //if it has a message object, then its an object literal to use return ko.validation.addRule(observable, { rule: ruleName, message: params.message, params: params.params || true }); } else { return ko.validation.addRule(observable, { rule: ruleName, params: params }); } }; },

Como puede ver, todos los extensores pueden recibir un objeto params o un objeto literal con los params y un mensaje personalizado. Así que en tu caso.

var numberValue = ko.observable().extend({ number: { message: "some custom message", params: true } })

Espero que esto ayude.


Las respuestas existentes son correctas. Sin embargo, si desea cambiar el mensaje de un validador que ya acepta otros parámetros, debe ajustar esos parámetros existentes en un nuevo objeto llamado params .

ko.observable().extend({ unique: { params: { collection: foo, valueAccessor: function(item) { return item.bar(); } }, message: ''some custom message'' } }


simplemente puede agregar una propiedad de validación como esta

emailAddress: ko.observable().extend({ // custom message required: { message: ''Please supply your email address.'' } }),