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

调用JavaScript函数后Submit按钮无法正常提交的问题排查

问题分析与解决方案

你的核心问题是**return false强制阻止了表单的默认提交行为**,不管验证逻辑是否通过,按钮都不会触发表单提交。另外你的JavaScript代码还有语法错误和冗余逻辑,需要一并修正。

1. 修正JavaScript语法与逻辑错误

  • 移除var message = document.getElementById("lblMessage");末尾多余的a
  • 删除重复的if (fb.checked)判断
  • 让Validate函数返回布尔值,验证通过返回true,不通过返回false

2. 调整按钮的点击事件

将按钮的onclick改为return Validate();,这样只有当验证通过时才会允许表单提交。

修改后的完整CSHTML代码

@{
    ViewData["Title"] = "Home Page";
}

<form asp-action="Create">

    <input type="checkbox" id="FirstBox" />Is this test?
    <br />
    <input id="test1" name="test1" class="form-control" />    <br />
    <input id="test2" name="test2" class="form-control" />
    <span id="lblMessage" style="display: none; color: red;">Please fill out at least one text box</span>
    <br />
    <button type="submit" id="myBtn1" onclick="return Validate();">Submit</button>

</form>



@section scripts {
    <script type="text/javascript">
        function Validate() {
            var message = document.getElementById("lblMessage");
            message.style.display = "none";
            var fb = document.getElementById("FirstBox");
            var sb = document.getElementById("test1");
            var tb = document.getElementById("test2");
            
            // 仅当复选框勾选时才验证文本框
            if (fb.checked) {
                if (sb.value.trim() === "" && tb.value.trim() === "") {
                    message.style.display = "block";
                    return false; // 验证不通过,阻止提交
                }
            }
            return true; // 验证通过,允许提交
        }
    </script>
}

补充说明

  • 给文本框添加了name属性,这样表单提交时参数能正确传递到控制器(如果后续需要接收这些值的话)
  • 使用trim()去除输入内容的前后空格,避免用户输入空格绕过验证
  • 控制器代码无需修改,保持现有逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:17:42