1

http://ericmbarnard.github.com/Knockout-Validation/検証エンジンでノックアウト js 検証を使い始めましたが、次のことを行う方法がわかりません。

1) 条件に基づいて必要な特定のフィールドを設定したいとします。それ、どうやったら出来るの?例:
this.Username = ko.observable().extend({ 必須: true }); // this.UserType = 2 の場合のみ required = true にする、など...

2) 検証中のフィールドのすぐ隣で検証メッセージが発せられます。フィールドの横に「*」のみを表示し、ページの下部にある validationsummary フィールドにエラー メッセージを表示します。すべての検証エラーがそこに表示されます。どうやってするか?

3) フォームの検証に合格するまで、フォームの送信は避けてください。現在、検証エラー メッセージが表示されますが、フォームは送信されます。だから私は何か間違ったことをしていると思います。以下は私のコードです:

 $(document).ready(function () {
var model;

// enable validation
ko.validation.init();


$.ajax({
    type: "POST",
    url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/GetData',
    async: false,
    data: "{ }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (result, status) {
        model = new ViewModel(result);
        ko.applyBindings(model);
    },
    error: GetDataError

});

$('#submit').click(function () {
    var data = ko.toJS(model);
    delete data.Vehicles;
    delete data.CopyWeeks;
    delete data.SetupTotal;
    delete data.CloseTotal;

    var mappedItems = ko.utils.arrayMap(data.DailyItemList, function (item) {
        delete item.Add;
        delete item.Delete;
        return item;
    });
    data.DailyItemList = mappedItems;

    $.ajax({
        type: "POST",
        url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/ProcessData',
        async: false,
        data: ko.toJSON(data),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result, stat) {
            alert(success);
            return false;
        },
        error: function (e) {
            alert(e);
        }
    });
});

});

よろしくお願いします。

編集: 検証構成を次のように設定できることがわかりました: ko.validation.init();

しかし、エラー メッセージ テンプレート 'sErrorMsg' を定義する方法がわかりません

4

1 に答える 1

3

1)。条件に基づいて必要な特定のフィールドを設定したいとします....

この ko 検証には、ネイティブ ルールが含まれています。次のようなことができます:

var myObj = ko.observable().extend({ required: { 
            onlyIf: function() { 
                      //here you can place your codition and can return.. 
                      //true or false accordingly
                    } 
            }});

2)。検証中のフィールドのすぐ隣で検証メッセージが発せられました..

これについては、 Validation Bindingを確認する必要があります。この validationOptions では、あなたのために仕事をすることができます。

更新messageTemplate:これは、要件に応じたバインディングの使用を示すフィドルです。

http://jsbin.com/ocizes/3/edit

3)。フォームの検証に合格するまで、フォームの送信は避けてください....

groupこのために、次のようにuse を使用できます。

   yourViewModel.Errors = ko.validation.group(yourViewModel);

現在、Errorsプロパティには、観測可能なオブジェクトのエラー メッセージが含まれています (存在する場合)。したがって、フォームを送信する前に、次のようなチェックを入れることができます。

      if(yourViewModel.Errors().length == 0) {
         //submit the form 
      }
      else {
         yourViewModel.Errors.showAllMessages();

         //this line shows all the errors if validation fails, 
         //but you can omit this.
      }
于 2013-04-01T10:25:05.730 に答える