我正在使用Asp.net MVC3和 knockout 库。我需要做一些客户端验证。我正在研究 knockout validation 插件。

所以我在我的js代码中声明了以下ko.observable值:

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

这是我的观点部分:
<input data-bind = "value: numberValue " />

当用户输入的值不是数字时,将显示错误消息:“请输入数字”。我可以显示其他错误消息,但仍使用本机规则吗?我不想为此编写自定义验证逻辑。任何有关工作示例的帮助将不胜感激。谢谢!

最佳答案

这是创建验证扩展程序的代码。

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
            });
        }
    };
},

如您所见,所有扩展程序都可以接收params对象或带有params和自定义消息的对象文字。所以就你而言。
var numberValue = ko.observable().extend({ number: {
    message: "some custom message",
    params: true
} })

希望这可以帮助。

关于knockout.js - 使用 knockout validation 插件的 native 规则设置自定义错误消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10552625/

10-12 18:00