Knockout Validation - Dynamic Validation Message

2019-07-31 23:47发布

I'm using the "equal" validation rule.

self.FirstName = ko.observable();
self.Lastname = ko.observable();
self.ValidationMessage = ko.computed(function(){
    return 'This is my dynamic validation message. ' + self.FirstName() + ' ' + self.LastName()
});
self.MyComputed = ko.computed(function() {
    // Keep it simple for example purpose
    return true;
}).extend({ equal: { message: self.ValidationMessage, params: false } });

I would like to know if there is any way to make the validation message dynamic based on a computed value or other observables.

1条回答
小情绪 Triste *
2楼-- · 2019-08-01 00:19

you dont need self.ValidationMessage. instead use a function as message and it will get called dynamically.

function vm() {
  var self = this;
  self.FirstName = ko.observable();
  self.LastName = ko.observable().extend({
    equal: {
      message: function(params, observable) {
        return 'First Name: ' + params + ' and Last Name: ' + observable() + ' are not the same.';
      },
      params: self.FirstName
    }
  });
}

ko.applyBindings(new vm());
.validationMessage { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.3/knockout.validation.min.js"></script>

<input data-bind="textInput: FirstName"><input data-bind="textInput: LastName">

查看更多
登录 后发表回答