0

だから、ここに私が数日間直面している問題があります。

durandal アプリケーションがあり、コントロールに ko 検証を適用したいと考えています。現在、検証は適用されていますが、問題は最初のロード時に有効にならないことです。たとえば、required が true に設定されているテキスト ボックスがあり、ロード時にこのテキスト ボックスが空である場合、KO は必要なメッセージを表示しません。

テキストボックスに何かを入力してからテキストボックスの外に移動し、テキストボックスに再び来て、データを削除してからテキストボックスの外に移動した場合にのみメッセージが表示されます。

ko.validation.init({messagesOnModified: false}) と div タグ内の HTML の検証オプションを追加してみました。

しかし、影響はありません。

以下は私のコードです

define(function (require) {
 ko.validation.init({
    messagesOnModified: false        
});
var duration = ko.observable().extend({
    required: { message: 'Please enter valid number.' }, number: true
});
var email = ko.observable().extend({ email: true, required: true });

var vm = {
    duration: duration,
    email: email

};
vm["errors"] = ko.validation.group(vm);
return vm;
});

HTML コード

            <span data-bind="text: errors().length"></span> Errors

            <div>
                <label for="txtDuration">Duration</label>
                <input name="txtDuration" type="text" data-bind="value: duration" />
                <span>(Min)</span>
            </div>
            <div>
                <label for="txtEmail">Email</label>
                <input name="txtEmail" type="text" data-bind="value: email" />
            </div>
            <input type="submit" value="Submit" data-bind="enable: isValid()">

    </form>

助けてください。

4

2 に答える 2

2

検証グループと showAllMessages を使用する必要があります

http://jsfiddle.net/U3QZU/1/

this.errors = ko.validation.group(this);
this.errors.showAllMessages();
于 2013-06-11T08:43:23.657 に答える