You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery Validation表单验证失效求助:$('form').valid()始终返回true

表单验证失效排查方案

以下是导致$('form').valid()始终返回true的几个关键问题:

  • 模型属性与asp-for拼写/大小写不匹配

    • Price字段:表单中asp-for="price"为小写开头,模型类中属性是public decimal Price { get; set; }(大写P),大小写不匹配会导致Unobtrusive Validation无法生成对应的验证规则属性。
    • Description字段:表单中asp-for="Descritpion"拼写错误,模型类中正确属性名是Description,拼写错误会使验证规则无法绑定到输入框。
      解决:修正asp-for属性值,与模型属性名完全一致:
    <input type="number" min="0" class="form-control" asp-for="Price" value="@Model.Price" />
    <input type="text" class="form-control" asp-for="Description" value="@Model.Description" />
    
  • 脚本依赖顺序错误
    jQuery Validation和Unobtrusive Validation都依赖jQuery核心库,必须确保引入顺序为:jQuery → jquery.validate.js → jquery.validate.unobtrusive.min.js。若未先引入jQuery,验证逻辑根本无法初始化,甚至可能无控制台报错。
    解决:在验证脚本前添加jQuery引入,示例:

    <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.5/dist/jquery.validate.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
    
  • 输入框ID无关错误(建议修正)
    表单中Price输入框ID设为fname、Description输入框ID设为phone,这些ID与属性名不匹配,虽不直接影响验证,但会导致后续DOM操作出错,建议删除手动设置的ID,让asp-for自动生成与属性名一致的ID。

修正后刷新页面,打开浏览器开发者工具的Elements面板,查看输入框是否生成data-val="true"、data-val-required等验证属性,若存在则说明Unobtrusive Validation已正确初始化,此时调用$('form').valid()即可正常返回验证结果。

内容的提问来源于stack exchange,提问作者n___dv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:57:20