gpt4 book ai didi

validation - knockout 验证在加载时立即评估

转载 作者:行者123 更新时间:2023-12-03 08:05:06 24 4
gpt4 key购买 nike

我正在使用 MVC、Knockout 和 Knockout Validation 来验证我的 View 模型。

我遇到了一个问题,即 View 模型属性的验证在加载后立即触发。换句话说,在用户尝试更改其值之前,我的输入旁边会显示“此字段是必需的”。

这个问题特别发生在下拉(选择)控件上。

我猜这是我通过在我的 javascript 代码的另一部分中以某种方式无意更改/访问/变异 observable 造成的问题。但是,我不知道如何追踪这一点。

有没有一种方法可以让我以某种方式订阅或跟踪导致 Knockout Validation 中验证的触发事件?我只需要知道为什么会这样。我非常有信心 isValid() 函数的值始终是错误的。

这是我的 HTML 在页面加载时如何设置的示例,不受干扰:

<select class="highlightable validationElement" name="obsstate" data-bind="value: standardAnswers.ans106_1.value" required="true">
<option value="">-- Select -- </option>
<option value="AK">AK</option>
<option value="AL">AL</option>
etc...

</select>

As displayed on my local machine

最佳答案

引用 KO 页面.... ( http://knockoutjs.com/documentation/options-binding.html )

KO 将在项目列表前面加上一个显示文本“选择一个项目...”的前缀,并且值未定义。因此,如果 myChosenValue 的值是 undefined(默认情况下 observables 会这样做),那么将选择 dummy 选项。如果 optionsCaption 参数是一个 observable,那么初始项的文本将随着 observable 值的变化而更新。

因此,我通过在定义属性时设置“未定义”来解决它,请参见下面的示例:

self.myProperty = ko.observable(undefined).extend({
required : {"Field Required"}
});

希望这可以帮助...

关于validation - knockout 验证在加载时立即评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com