You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

将JavaScript从.aspx移至外部.js文件后失效的解决方法

解决ASP.NET中外部JS文件无法正常运行复选框限制逻辑的问题

咱们一步步来排查和修改,让你的代码正常跑起来:

1. 移除重复的jQuery引用,避免版本冲突

你现在同时引入了jQuery 1.8.3和3.2.1,这两个版本会互相覆盖导致异常,直接删掉旧的1.8.3引用,只保留3.2.1:

<head runat="server">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript"></script>
    <script src="JavaScript.js" type="text/javascript"></script>
</head>

2. 修正表单选择器,适配ASP.NET的ID生成规则

ASP.NET的服务器端控件(包括form1)在渲染时会自动生成带前缀的客户端ID(比如用了母版页的话会变成ctl00_form1),直接用$('#form1')大概率找不到元素。咱们换两种更可靠的方式:

  • 方式一:用属性选择器匹配ID结尾为form1的表单:
    var limit = 2;
    $(function () {
        $('form[id$="form1"]').on('change', '[id*="cbxAnswers"]', function (evt) {
            if ($('[id*="cbxAnswers"]:checked').length > limit) {
                this.checked = false;
                alert('Max number to pick is ' + limit);
            }
        });
    });
    
  • 方式二:直接监听document的事件委托(更稳定,不受表单ID变化影响):
    var limit = 2;
    $(function () {
        $(document).on('change', '[id*="cbxAnswers"]', function (evt) {
            if ($('[id*="cbxAnswers"]:checked').length > limit) {
                this.checked = false;
                alert('Max number to pick is ' + limit);
            }
        });
    });
    

3. 确认外部JS文件的路径是否正确

检查JavaScript.js的位置:

  • 如果aspx页面在网站根目录,JS文件也在根目录,那src="JavaScript.js"没问题;
  • 如果aspx在子目录,比如/Pages/Test.aspx,JS在根目录,要改成src="/JavaScript.js"(绝对路径)或者src="../JavaScript.js"(相对路径);
  • 可以在浏览器开发者工具的「网络」标签里查看JS文件是否成功加载,如果404就是路径错了。

4. 可选:用CSS类优化复选框选择器(更精准)

如果你的cbxAnswers是服务器端的CheckBoxList,可以在后台给它设置统一的CSS类,比如CssClass="answer-checkbox",然后JS里用类选择器替代ID包含选择器,避免误匹配其他元素:

var limit = 2;
$(function () {
    $(document).on('change', '.answer-checkbox', function (evt) {
        if ($('.answer-checkbox:checked').length > limit) {
            this.checked = false;
            alert('Max number to pick is ' + limit);
        }
    });
});

按照上面的步骤修改后,你的复选框限制逻辑应该就能正常工作了。

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

火山引擎 最新活动