Knockoutjs 验证 areSame 或 MustMatch 示例

2024-01-01

我正在尝试使用 GitHub 上的 Knockoutjs 验证插件。大部分似乎工作得很好,但是当我尝试使用扩展验证 MustEqual(password/confirm password) 时,它似乎没有做任何事情。我缺少什么?

我非常想学习这种扩展技术以供将来使用。

(整个 html 和 javascript 也通过 AJAX 调用加载到页面。如果这与它有任何关系的话。)

我的 JavaScript

    function UserAccount(data) {
        var self = this;
        self.Password = ko.observable(data.Password).extend({ required: true, minlength: 6, message: "Password is required", maxLength: 12 });

        self.Firstname = ko.observable(data.Firstname).extend({ required: true, minlength: 6, message: "Firstname is required", maxLength: 40 });
        self.Lastname = ko.observable(data.Lastname).extend({ required: true, minlength: 6, message: "Lastname is required", maxLength: 40 });
        self.Email = ko.observable(data.Email).extend({ required: true, minlength: 6, message: "Email is required", email: true, maxLength: 90 });
        self.ConfirmPassword = ko.observable().extend({ mustEqual: self.Password()});
        ...........................Other Code............
        }

    ko.validation.rules['mustEqual'] = {
        validator: function (val, otherVal) {
            alert("Hello");
            return val === otherVal;
        },
        message: 'The field must equal {0}'
    };
    $(document).ready(function () {


        ko.applyBindings(new UserAccount(initdata), $("#UserAccount").get(0));
        ko.validation.registerExtenders();

    });

您的自定义验证器代码没问题。但是你没有正确调用ko.validation.registerExtenders();方法。

虽然没有明确说明,但你需要调用ko.validation.registerExtenders(); before你正在打电话ko.applyBindings.

因此,要修复您的代码,您只需编写:

$(document).ready(function () {
    ko.validation.registerExtenders();
    ko.applyBindings(new UserAccount(initdata), $("#UserAccount").get(0));
});

但你会面临另一个问题:mustEqual验证器用于与静态值进行比较,因此如果您想比较密码和确认密码等两个属性,它将不起作用。

你需要的是类似的东西用户贡献的“相同”验证器 https://github.com/Knockout-Contrib/Knockout-Validation/wiki/User-Contributed-Rules#are-same:

ko.validation.rules['areSame'] = {
    getValue: function (o) {
        return (typeof o === 'function' ? o() : o);
    },
    validator: function (val, otherField) {
        return val === this.getValue(otherField);
    },
    message: 'The fields must have the same value'
};

你可以使用什么,例如:

self.Password = ko.observable(data.Password).extend({
    required: true,
    minlength: 6,
    message: "Password is required",
    maxLength: 12
});
self.ConfirmPassword = ko.observable().extend({
    areSame: self.Password
});

Demo JSFiddle http://jsfiddle.net/nemesv/trvz7/1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Knockoutjs 验证 areSame 或 MustMatch 示例 的相关文章

  • 由于 MIME 类型而导致资源被阻止?

    多年来我已经成功地包含动态创建的 javascript 文件 这是一个例子 https granadainfo com sups php locs 95 https granadainfo com sups php locs 95 正如你所
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • jslint 配置 |传递全局变量

    我如何提醒 jshint 我有全局变量 即命名它们 我知道你可以做到这一点 但我不记得语法了 我在这里定义了一个全局的 function window glob1 local var 稍后像这样使用 不同的 IIFE function gl
  • iPhone 和 iPad 滚动结束

    我正在制作一些无限滚动的 jQuery 跨浏览器画廊 我工作得很好 但在 iPhone 上 我想也在 iPad 上 而不是相等的值 我有一些不成比例的值不匹配 window scrollTop document height window
  • 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

    我正在尝试验证字符串以使它们成为有效的网址 我只需要保留 A Z 0 9 并使用以下命令从字符串中删除其他字符javascript or jquery 例如 贝儿餐厅 我需要将其转换为 百丽餐厅 所以字符被删除 只保留 A Z a z 0
  • 如何防止输入文本中出现“后重音”

    我相信这是一个简单的问题 但在谷歌上搜索几个小时后我找不到任何答案 也许我无法在搜索中使用正确的单词 P 我有一个 javascript 方法 可以防止用户用数字以外的其他字符填充文本框 如下面的代码所示 它在 KeyDown 事件中使用
  • 我应该如何实现将状态保存到 localStorage?

    CODE var React require react var Recipe require Recipe jsx var AddRecipe require AddRecipe jsx var EditRecipe require Ed
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • 如何在打字稿中使用外部js

    我通过 Typescript 代码生成 Angular JS 代码 在一种情况下 我需要将外部 JS 文件添加到我的打字稿文件中 并且需要访问 js 文件中的类 我像这样添加js文件
  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • 在 Chrome 开发者工具中禁用调试器语句

    我正在尝试对恶意 JavaScript 进行逆向工程 当我最初加载侧面时 会注入 JS 代码 其中包括 debugger 语句并将断点注入我的 chrome 开发人员控制台 通过stackoverflow阅读 禁用所有断点does not帮
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 从请求url获取hash参数

    我有这样的网址 http www coolsite com daily plan id 1 http www coolsite com daily plan id 1解析该字符串并读取哈希值 id 之后的值 的最简单方法是什么 谢谢 在客户
  • 如何将项目插入到特定索引处的空数组中?

    我想将一个项目插入到空数组的指定索引中 我看到有 Array prototype splice 方法 但是 如果我在空数组上使用 splice 它只会添加项目来结束数组 如下所示 var a a splice 3 0 item 3 cons
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • 表单 CSS:根据选中/未选中状态设置单选框的父级(标签)样式

    所以我有一个表格 表格中提出的大多数问题都是使用无线电输入 我要和
  • 如果 jquery 验证激活,如何在单选按钮中放置红色边框[重复]

    这个问题在这里已经有答案了 我的问题是 如果 jquery 验证像示例图片中那样激活 我无法使单选按钮具有红色边框 任何人都可以帮我解决这个问题吗 http i38 photobucket com albums e149 eloginko
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the

随机推荐

  • 何时使用 TaskCreationOptions.LongRunning?

    我想知道这个问题有一段时间了 但从未真正找到答案 我知道这是任务调度程序在其中运行任务的提示 并且任务调度程序可以 或现在将 决定为该任务实例化一个非线程池线程 我不知道 令人惊讶的是在互联网上找不到任何地方 是何时将任务指定为长时间运行的
  • 如何在 MySQL 8 中永久禁用列统计?

    Since MySQL 8 the column statistics默认情况下启用标志 所以如果你尝试转储一些表MySQL工作台8 0 12 您会收到以下错误消息 14 50 22 转储数据库 表名 运行 mysqldump exe de
  • 如何通过输入流手动向 cmd.exe 进程提供命令?

    这个问题听起来有点晦涩难懂 这是一个稍长的版本 我需要让主循环等待用户输入 并且还需要运行一个进程并等待来自用户输入要发送到的流的输入 全文 我正在构建一个 Cmd 模拟器 起初一切看起来都很好 用户输入命令 它会回显到输出区域 进行处理
  • 服务器端和胖客户端 Web 应用程序的文件夹结构

    目前 我使用 Node js 作为后端 使用 extjs 或骨干作为客户端 现在我对文件夹结构完全感到困惑 Using express我的文件夹结构如下 appname controllers models appmodel js publ
  • laravel:如何获取与数据透视表中另一列相关的列(3列数据透视表)

    我不知道如何表达这个问题 但我需要执行以下操作 我有一个包含三列的数据透视表user id account id role id 所以在我的数据库中如果我有这些行account role user pivot account id user
  • oracle错误:没有足够的值

    我有一个表donor master create table donor master donor id number 10 primary key not null dob date not null age number 3 not n
  • 绑定在 WPF Datagrid 第二行标题中不起作用

    My Xaml
  • 禁用特征中的 FactoryGirl 关联

    在 Rails 应用程序中 我使用 FactoryGirl 定义一个通用工厂以及几个更具体的特征 一般情况和除一个特征之外的所有特征都具有特定的关联 但我想定义一个不创建 构建该关联的特征 我可以使用after设置关联的回调id to ni
  • 将因子转换为 R 中的日期/时间

    这是我的数据框中包含的信息 minuteofday factor w 89501 levels 2013 06 01 08 07 00 dDdt num 7 8564 2 318 minutes POSIXlt format NA NA N
  • 在 C# 中序列化匿名委托

    我试图确定使用以下序列化代理来启用匿名函数 委托 lambda 的序列化可能会导致哪些问题 see http msdn microsoft com msdnmag issues 02 09 net S3 class NonSerializa
  • Android TextField:以编程方式设置焦点+软输入

    在我看来 我有一个搜索 EditText 我想以编程方式触发该字段上的单击事件的行为 即将焦点集中到文本字段并在必要时显示软键盘 如果没有可用的硬键盘 I tried field requestFocus 该字段实际上获得焦点 但不显示软键
  • html 元素 (div) 的完整高度,包括边框、内边距和边距?

    我需要 div 的完整高度 我目前正在使用 document getElementById measureTool offsetHeight offsetHeight 返回元素的高度 包括边框和填充 如果有 但不包括边距 但是 div 内的
  • Int32.Equals 与 '==' 运算符

    我环顾四周 但似乎没有人问过这个问题 所以就这样吧 我正在开发一个自定义类 它将具有IEquatable界面 因此我正在制作自己的Equals方法 它看起来是这样的 public bool Equals QueryFilter qfilte
  • C++“new”运算符是如何实现的

    Class B B b new B default constructor B b1 new B 10 constructor which takes an argument B int x 但是 如果我们想编写一个自定义版本new 语法是
  • 使用现有私钥创建 CSR

    我想做的是 创建一个 CSR 并使用受密码保护的私钥 密钥 在 OpenSSL 中 我可以创建一个带有密码的私钥 如下所示 openssl genrsa des3 out privkey pem 2048 有什么方法可以使用我刚刚创建的密钥
  • 使用 C# 调用 php 脚本 (Unity)

    我对 Unity 和 PHP 都很陌生 目前我正在开发一个项目 可以使用 PHP 将数据从 MySQL 数据库解析到 Unity 我最初想尝试启用一种方法 用户可以更改 php 脚本并使其能够选择不同的数据表 但是有人建议我列出 php 脚
  • 如何从 nginx 发出相对 URL 重定向?

    如何在 nginx 中配置重定向以相对重定向到特定路径来响应某个 url The Nginx 文档 https www nginx com resources wiki start topics tutorials config pitfa
  • Android中的动态相对布局

    我正在尝试将两个图像放在一起 我可以让它与 xml 文件一起正常工作 但我想动态地执行此操作 ctdeasyone 是一个透明图像 所以这工作正常
  • Git推送错误:无法创建'.git/refs/remotes/jr/master.lock':文件存在

    这不是重复的 我看过这个堆栈溢出帖子 https stackoverflow com questions 8500089 fatal unable to create refs heads master lock file exists f
  • Knockoutjs 验证 areSame 或 MustMatch 示例

    我正在尝试使用 GitHub 上的 Knockoutjs 验证插件 大部分似乎工作得很好 但是当我尝试使用扩展验证 MustEqual password confirm password 时 它似乎没有做任何事情 我缺少什么 我非常想学习这