<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">SKU</label>
<input disabled.bind="readonly" type="text" class="form-control" value.bind="production.Sku1">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="control-label">SKU</label>
<input disabled.bind="readonly" type="text" class="form-control" value.bind="production.Sku2">
</div>
</div>
</div>
У меня есть текстовые поля выше, либо sku1 должен быть обязательным, либо sku2. Я знаю, как сделать это в том, что кажется всем, кроме Аурелии.Aurelia Validation - одно из двух полей должно быть обязательным
Я надеялся, что это будет что-то простое, как
this.validator = this.validation.on(this)
.ensure('production.StockStatusId').isGreaterThan(0).withMessage('is required')
.ensure('production.Sku1').isNotEmpty().Or.ensure('production.Sku2').isNotEmpty();
я затрагивал, если заявления, но не уверены, что computedFrom будет
UPDATE
Я надеялся, что это будет работать, однако это не так. Кто-нибудь знает, почему?
.ensure('production.Sku1', (config) => {config.computedFrom(['HasProvidedEitherSku'])})
.passes(() => { return this.HasProvidedEitherSku }).withMessage("(Need to provide a SKU)")
get HasProvidedEitherSku(){
if ((this.production.Sku1 === undefined || this.production.Sku1 === null) && (this.production.Sku2 === undefined || this.production.Sku2 === null)){
return false;
} else {
return true;
}
}
UPDATE
Это делает работу, таким образом. Однако обе показывают ошибку сразу, однако ошибка очищается только от той, которая стала действительной. Я понимаю, почему, как сообщение об ошибке прилагается к каждому один сен, однако я не знаю, как остановить этот
.ensure('production.Sku1', (config) => {config.computedFrom(['HasProvidedEitherSku'])})
.if(() => { return this.HasProvidedEitherSku })
.isNotEmpty().withMessage('a SKU is required')
.endIf()
.ensure('production.Sku2', (config) => {config.computedFrom(['HasProvidedEitherSku'])})
.if(() => { return this.HasProvidedEitherSku })
.isNotEmpty().withMessage(‘a SKU is required')
.endIf();
Попробуйте .when как в этом примере http://stackoverflow.com/questions/41137697/aurelia-validation-applying-some-rule-on-change-and-some-on- blur-on-same-proper? rq = 1 Сделайте одно обязательное. Если другое пустое. Просто мысль. – smoore4