我正在实施一个捐款表格,我有一个Donation
型号的字段" Amount":
[Required]
[DataMember(IsRequired = true)]
[Range(36, 10000)]
public decimal Amount { get; set; }
我也在视图中设置了验证:
<div class="editor-label">
@Html.LabelFor(model => model.Payment.Amount)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Payment.Amount)
@Html.ValidationMessageFor(model => model.Payment.Amount)
</div>
问题是,当用户选择不同的&#34;货币&#34;在网页中,某些货币的最低金额应该更改。
我尝试做的是更改Input
属性:
$("#Donation_Currency").change(function () {
var curr = this.value;
switch (curr) {
case "USD":
document.getElementById("Donation_Amount").setAttribute("data-val-range", "The field Amount must be between 36 and 10000.");
document.getElementById("Donation_Amount").setAttribute("data-val-range-min", "36");
break;
case "ILS":
document.getElementById("Donation_Amount").setAttribute("data-val-range", "The field Amount must be between 100 and 10000.");
document.getElementById("Donation_Amount").setAttribute("data-val-range-min", "100");
break;
default:
}
});
但即使我看到输入属性发生了变化,我仍然会看到旧信息出现。
我确实做错了,但问题是:
如何根据另一个字段中设置的值更改字段的验证?
答案 0 :(得分:2)
引用OP :
&#34;但即使我看到输入属性发生了变化,我仍然会看到旧信息出现。&#34;
这是因为一旦插件初始化,你就不能只是通过改变HTML属性来改变jQuery Validate选项(正如你所了解的那样)。插件初始化在页面加载时发生一次,再也不会发生。
初始化后,您必须使用插件提供的方法对规则进行动态更改。 See the .rules('add')
method动态添加规则...它也覆盖先前定义的规则。
尝试更像这样的东西......
$("#Donation_Currency").change(function () {
var curr = this.value;
switch (curr) {
case "USD":
$("#Donation_Amount").rules('add', {
range: [36,10000],
messages: {
range: "The field Amount must be between 36 and 10000."
}
});
break;
case "ILS":
$("#Donation_Amount").rules('add', {
range: [100,10000],
messages: {
range: "The field Amount must be between 100 and 10000."
}
});
break;
default:
}
});