knockout.js - Knockout JS knockout 验证插件

标签 knockout.js

我有一个带有选择属性的 viewModel。该属性放置在 ko.validatedObservable({}) 内。我用不同的 ko.validatedObservable() 部分分隔不同的 View 。我的输入验证正常,除了选择从页面加载验证,即使在 init() 中我有 messagesOnModified: true (因为我不想在第一次时显示错误消息加载页面)。第一个选项具有 value=""。我检查了标记,并设置了 data-orig-title="REQUIRED",而其他输入控件已将此属性设置为 "",因为它应该是

有人能指出为什么选择的行为不同吗?我还应该补充一点,我正在使用 razor @Html.DropDownListFor(x=>x.dest_provincia, Model.Items, new { data_bind="dest_provincia"}) 生成选择 这是验证示例

(在 View 模型上)

self.dest_provincia = ko.observable().extend({ required: { message: "REQUIRED"} });

这被放置在里面:

self.userValidation = ko.validatedObservable({
        rem_provincia: this.rem_provincia
)};

我注意到验证发生在选择上,因为正在触发更改事件,但我不知道是什么造成的..? 更新:我尝试通过 razor 创建选择,通过在 ajax 调用中循环 $.each 并在 knoackout 中填充 observableArray 。无论如何,更改事件都会在页面加载时触发...!?

最佳答案

我今天成功解决了这个问题。

Razor 引擎对选择选项进行模板化,然后将所选元素的值绑定(bind)到 Knockout 之间存在问题。

尽管选择框中没有用户输入的值(默认值),但“--select--”实际上包含一个值。就我而言,它是一个空字符串。因此,当我应用 knockout 绑定(bind)时,我的 viewmodel 属性被“更新”为空字符串值,因此触发了验证。

为了解决这个问题,我将模型的默认值设置为空字符串。因此,当应用绑定(bind)时,Knockout 可观察对象上不会触发 valueHasMutated 事件,因此不会进行验证。

关于knockout.js - Knockout JS knockout 验证插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654524/

相关文章:

javascript - knockout k.apply 不是函数

javascript - knockout 多个 View 模型 - 未定义

javascript - 无法读取未定义/KnockOut 的属性 x

javascript - knockout 'attr' 是否总是假设输入需要转义,是否可以将其关闭?

javascript - knockout : Unusual Mapping Pattern

javascript - knockout 计算未更新

javascript - 如何将 knockout 中的数据绑定(bind)到没有名称的数组

局部 View 中的 Javascript 函数无法访问页面中定义的 Javascript 变量(MVC 3)

javascript - Knockout DatePicker 绑定(bind)项不会禁用 DatePicker

lambda - TypeScript 和 Knockout 绑定(bind)到 'this' 问题 - 需要 lambda 函数吗?