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

MVC Razor循环中为索引式手机号字段添加jQuery Mask问题

解决MVC Razor循环中手机号输入框的jQuery掩码问题

我明白你遇到的困扰了——在Razor的for循环里生成的手机号输入框,明明加了类名绑定掩码,可就是没生效。咱们一步步排查解决:

第一步:确认类名是否正确渲染到HTML元素

先右键页面查看源代码,找到循环生成的input标签,检查它的class属性里有没有thisisCp。正常应该是这样的:

<input class="form-control thisisCp text-box single-line" id="getAttendeeLists_0__CellPhone" name="getAttendeeLists[0].CellPhone" type="text" value="">

如果没看到thisisCp,可以尝试把EditorFor换成TextBoxFor(有时候EditorFor会因模板优先级忽略自定义属性):

@Html.TextBoxFor(model => model.getAttendeeLists[i].CellPhone, new { @class = "form-control thisisCp" })

第二步:确保脚本在DOM完全就绪后执行

虽然你把脚本放在了@section Scripts(通常会渲染到页面底部),但偶尔还是会因为DOM未完全加载导致选择器找不到元素。把掩码代码包裹在$(document).ready()里更稳妥:

@section Scripts {
    @Scripts.Render("~/jquerymask")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/jqueryval")
    <script>
        $(document).ready(function() {
            $(".thisisCp").mask("?(9999)999-9999");
        });
    </script>
}

第三步:换个更可靠的选择器(备选方案)

如果类选择器还是不生效,可以通过输入框的name属性定位——Razor生成的name会包含CellPhone关键字(比如getAttendeeLists[0].CellPhone),用属性包含选择器更精准:

$("input[name*='CellPhone']").mask("?(9999)999-9999");

第四步:检查mask插件是否正确加载

打开浏览器开发者工具(F12)的Network标签,刷新页面,确认~/jquerymask对应的js文件是否成功加载(状态码为200)。如果是404,说明你的bundle配置路径有误,得先确保jquery.mask.js文件的引用路径正确。

按这几步操作,应该就能解决掩码不生效的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:47