【问题标题】:ASP.NET MVC5 Client-side ValidationASP.NET MVC5 客户端验证
【发布时间】:2017-01-11 02:56:54
【问题描述】:

如果选中复选框,我在视图中有一个金额字段。

一旦 Razor 使用模型数据渲染视图,并且用户选中了未输入相应数量的复选框。将出现验证消息。如果我取消选中该复选框,验证消息不会消失。

我尝试使用 jquery 删除所有生成的规则,但如果用户再次选中复选框,在回发之前,这些验证规则将被删除(除非我存储它们......这真的丑。)

是否有一种可接受的方式来重新验证具有 MVC 模型中相同要求的客户端?

型号:

[Display(Name = "Include Amount")]
public bool IncludeAmount { get; set; }
[Display(Name = "Amount")]
[RequiredIf("IncludeAmount", TargetValue = true, ErrorMessage = "Amount is required.")]
[MaxDigits(10, 2)]
[RegularExpression(RegularExpressions.Money, ErrorMessage = ErrorMessages.NumericValueInvalidFormat)]
[GreaterThanZero]
public Nullable<decimal> Amount { get; set; }

查看:

<td class="dataEntryLabel" colspan="2">
    @Html.LabelFor(model => model.IncludeAmount)
</td>
<td class="dataEntryField" colspan="2">
    @Html.CheckBoxFor(model => model.IncludeAmount, new { id = "IncludeAmount" })
    <span class="dollar-sign">@Html.TextBoxFor(model => model.Amount, "{0:F}", new { id = "Amount", disabled = "disabled" })</span>
    @Html.ValidationMessageFor(model => model.Amount)
</td>

JavaScript(客户端):

function fixUnobtrusiveValidations() {
    var form = getForm();
    (<any>$).validator.unobtrusive.parse(form);
}

function onClickCheckBoxIncludeAmount(){
        fixUnobtrusiveValidations();
}

$('IncludeAmount').click(onClickCheckBoxIncludeAmount);

【问题讨论】:

标签: javascript jquery asp.net-mvc validation asp.net-mvc-5


【解决方案1】:

试试这个来禁用 onclick 事件的客户端验证 参考:https://jqueryvalidation.org/validate/#onclick

$("#myform").validate({
    onclick: false,
});

$("#yourChkboxID").validate({
    onclick: false,
});

【讨论】:

    【解决方案2】:

    这行得通:

    if (!($('#IncludeAmount').checked)){
       toggleValidatorVisibility($('#Amount'), false);
    }
    
    function toggleValidatorVisibility(element: any, value) {
      var td: any = element.closest('td');
      if (value) {
           td.find('span.field-validation-error').show();
      } else {
           td.find('span.field-validation-error').empty();
      }
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 2012-05-05
      • 2015-11-08
      • 2010-09-14
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多