问题标签 [knockout-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4291 浏览

javascript - 使用 Knockout 和 Knockout Validation 验证单选按钮未应用预期的 CSS 类

我有一个表单,其中有两组单选按钮。在每一组中,用户必须选择一个(我们默认不选择一个,以便用户必须“考虑”选择一个或另一个)。

我正在使用淘汰赛 2.2.0 和最新版本的淘汰赛验证。我遇到了单选按钮的问题,因为验证将正确确定未选择单选按钮,但是,它没有为单选按钮提供 css 类。如何获得验证以将 css 应用于单选按钮输入?

理想情况下,在确定未选择单选输入后,我想将“invalidElement”的 css 类应用于组中的两个单选按钮。

*注意:它将“invalidElement”的 css 类应用于所有其他输入,单选按钮输入除外。此外,我还考虑编写一些自定义内容以突出显示未选中的单选按钮输入,但我对 Knockout 不太熟悉,无法执行此操作。

带有绑定的 HTML...

0 投票
1 回答
161 浏览

javascript - coffeescript 中的淘汰验证库

我只是想知道是否有人在将淘汰赛验证插件(https://github.com/ericmbarnard/Knockout-Validation)转换为咖啡脚本方面有任何运气。

我已经尝试过使用http://js2coffee.org/之类的工具,但到目前为止,我一直无法获得适用于咖啡的版本。

我问,因为它正在使用的项目都是用咖啡脚本编写的,所以在编写自定义验证规则时,团队希望用咖啡而不是 JavaScript 来编写它们。到目前为止,自定义规则刚刚添加到敲除验证 javascript 文件中

0 投票
2 回答
9384 浏览

knockout.js - 淘汰赛映射验证

我正在尝试将验证附加到映射视图。我正在使用 Knockout 映射和验证插件。伪模型:

Javascript:

如何扩展 people observableArray 以设置验证规则和消息?我需要验证人员和书籍子数组属性。我发现只有使用显式模型设置的示例,没有自动映射,例如:

然后我需要设置 ko.validatedObservable、isValid 和 validation.init,但我真的不知道如何处理/组织这个。你能提供一些帮助吗?

0 投票
2 回答
2263 浏览

typescript - 如何为具有字符串索引数组的重载函数创建 TypeScript 接口定义?

我正在为敲除验证插件编写 TypeScript 定义文件。我坚持的一件事与该库中如何定义新的验证规则有关。

创建基本同步验证器的ko.validation方法如下:

这很简单,但是创建异步验证器的方法略有不同:

异步回调可以采用 bool(用于验证通过/失败)或对象文字(isValid用于通过/失败,并message更改验证消息)。为此,我创建了以下内容:

这是我的精简版,KnockoutValidationStatic它公开了规则数组。我还为规则数组创建了一个特殊接口来指定字符串索引:

我坚持的是KnockoutValidationRule. 我尝试了以下方法:

这适用于同步验证器声明。但是,当我创建一个异步时,我收到以下错误:

无法转换'{消息:字符串;验证器:(值:任意,参数:任意,回调:KnockoutValidationAsyncCallback)=> void }' to 'KnockoutValidationRule':类型为'{ message: string; 的属性'validator'的类型;验证器:(值:任意,参数:任意,回调:KnockoutValidationAsyncCallback)=> void;}' 和 'KnockoutValidationRule' 不兼容:

'(value: any,params: any,callback: KnockoutValidationAsyncCallback) => void' 和 '{ (value: any,params: any): bool; 类型的调用签名 (值:任意,参数:任意,回调:KnockoutValidationAsyncCallback):无效;} 不兼容:

调用签名需要 2 个或更少的参数

我还考虑过将回调作为可选参数,但这不起作用,因为函数根据签名返回不同的值(没有第三个参数的布尔值,如果存在第三个参数则为 void)。

我在这里做错了什么?我的字符串索引数组的规则有问题吗?是否可以根据这个库的工作方式创建一个 TypeScript 接口?

更新 1

看起来我在KnockoutValidationRule界面中的重载方面走在了正确的轨道上。我刚刚发现,如果我ko.validation.rules从 a更改KnockoutValidationRulesArray为 a KnockoutValidationRule[],我的测试代码对于同步和异步验证器都可以正常编译......

我是在声明数组错误吗?

更新 2

这是我用来测试定义的一些示例代码:

就像我说的,当ko.validation.rules是 a时,上面的编译很好KnockoutValidationRule[]。当我将其更改为KnockoutValidationRulesArray.

0 投票
1 回答
540 浏览

knockout.js - 如何将 Knockout.Combobox 与 KnockOut Validation 一起使用?

我正在尝试将 Knockout.Combobox 与 Knockout Validation 库一起使用。

https://github.com/AndersMalmgren/Knockout.Combobox

http://jsfiddle.net/Zc9Aj/

以上不起作用,我假设验证库不了解如何验证组合框绑定,但是如何将这两个库链接在一起?

0 投票
2 回答
3147 浏览

javascript - knockoutjs 验证 - 重新计算验证规则

我正在使用 knockoutjs 和 knockoutjs 验证插件来验证我的视图模型。这是我的javascript代码

这是我的 HTML

如果单击“取消验证”按钮,我想要做的是在运行时更改验证规则。为此,我使用了一个自定义验证函数以及一个名为“Canceled”的 ko.observable 变量。根据“Canceled”的值,我的验证器函数返回真或假。我遇到的问题是验证功能在页面加载时只运行一次。当“Canceled”的值发生变化时,该函数不会重新运行。这是正常行为吗?当我更改“Canceled”的值时,有没有办法让我重新运行当前模型的验证功能?

这是一个尝试代码的小提琴。我在验证函数中添加了一个警报,以表明它在页面加载时只运行一次。

http://jsfiddle.net/eewJe/

0 投票
1 回答
9150 浏览

javascript - 淘汰验证自定义消息模板的问题

我没有使用 Knockout Validation,我正在尝试了解可以用它做什么。

我试图弄清楚当出现错误时是否可以在输入标签的右侧显示图标而不是错误消息。而且,如果用户将鼠标悬停在图标上,则会显示错误消息。

有没有人这样做或知道如何做到这一点?

谢谢。

编辑:(我正在尝试做的更详细的示例)

假设我的视图模型中有以下内容:

我的 HTML:

我的理解是,如果名字文本框留空,那么(默认情况下)一些文本将显示在文本框的右侧,说明该字段是必需的。

我想了解的是如何将在右侧显示错误文本的默认行为更改为在右侧显示一个图标,当将鼠标悬停在该图标上时,将弹出错误消息。

所以,开始会是这样的:

我不知道我是否正确使用了 messageTemplate 功能。我也不知道在 customTemplate 中将文本绑定到什么,以便为每个错误显示正确的错误消息。IOW、firstname 和 lastname 可能有自定义错误消息。如果他们都使用相同的模板,模板如何容纳自定义错误消息?

我希望这是有道理的。

0 投票
1 回答
4517 浏览

validation - 淘汰赛验证可以将 validateObservable 扩展到针对整个模型进行验证吗?

我正在将 Knockout 用于绑定到具有一定深度/复杂性的 ViewModel 的视图。

为了验证我的 ViewModel,我需要计算整个 VM 树(遍历和比较后代)。我希望利用淘汰验证插件@ https://github.com/ericmbarnard/Knockout-Validation创建一些任意自定义验证规则并报告任何错误。

我使用 KO 计算的 observable @ http://jsfiddle.net/drdamour/ZrVZ7/设置了一种可能的方法。验证规则是确保没有 2 个 SubCollections 具有相同的值。这是有效的,但它没有使用 Knockout-Validation,我的规则现在在我的计算 observable 中实现,这似乎是错误的。

我的问题与Knockout ValidationvalidatedObservable 组错误非常相似,但我发现发现的解决方案(托管在http://jsfiddle.net/CGuW2/6/上)不太理想:

因为它通过将经过验证的 self 作为属性添加到自身 (isValidSum) 来复制 ViewModel。我试图消除这种冗余@ http://jsfiddle.net/drdamour/5B8s4/但视图无法绑定到已验证的Observable:

这可能是 KO 或 KO-Validation 的错误,或者我可能只是做错了。

所以问题是:在淘汰赛中确定 VM 是否对跨 VM 的多个属性和层进行评估的条件有效的最佳方法是什么?

0 投票
1 回答
3165 浏览

asp.net-mvc-3 - 仅当按下特定按钮时才进行淘汰验证

https://github.com/ericmbarnard/Knockout-Validation/wiki/Native-Rules

我在我的 MCV3 页面上使用淘汰赛验证。我的情况是我有两个按钮。一个是添加到收藏夹,另一个是保存。添加到集合会根据需要查找以下属性:

我定义了两个函数来检查页面是否有效:

第一的:

第二:

我想要做的事情是,如果调用 Save,我不希望 FirstName、LastName 和 Email 是必需的,仅验证 Date1,但在调用 AddToCollectoin 时需要 FirstName、LastName 和 Email,但是Date1 不是。如何设置 Only If Native Rule,或者有更好的方法来做到这一点。

任何帮助深表感谢!

0 投票
2 回答
3230 浏览

asp.net-mvc-3 - 淘汰赛验证和清除控制的正确方法

我有以下代码,它工作正常,除非您在插入项目后清除属性。错误立即出现。

我在淘汰视图模型中添加了方法

我在 HTML 中有以下内容:

问题是在我调用 this.FirstName(null) 之后。错误立即出现!我希望只有在他们按下按钮时才会显示错误,即使在属性被清除后也是如此