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

JavaScript表单验证后弹窗失效,点击提交页面刷新问题求助

表单提交刷新问题及手机号验证修复方案

核心问题分析

页面点击提交就刷新,是因为JS脚本没正确绑定表单提交事件,再加上代码里的拼写、逻辑错误,导致e.preventDefault()根本没执行,表单走了默认提交流程。


具体修复步骤

1. 调整脚本加载位置

你把JS脚本放在了<head>里,这时候页面DOM还没加载完,document.getElementById拿不到表单、输入框这些元素,提交事件监听等于白加。

修改方法:
把<script src="JAVASCRIPT.js" type="text/jsx"></script>从<head>里删掉,移到</body>标签的最前面(Bootstrap那几个脚本之后),同时去掉type="text/jsx"(你写的是普通JS,不是React的JSX):

<!-- 保留原Bootstrap脚本 -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<!-- 移到这里 -->
<script src="JAVASCRIPT.js"></script>

2. 修正JS代码的错误

你的JS里有好几处低级错误,直接导致验证失效:

  • documet拼写错了,应该是document
  • isValid == false是比较,不是赋值,得改成isValid = false
  • 判断手机号是否为数字时,你拿元素本身Cp_num去判断,应该用Cp_num.value(输入框的内容)
  • 手机号长度判断逻辑错了,要检查是否等于11位,不是只判断>=12

修正后的完整JS代码:

const Cp_num = document.getElementById('Cp_Number')
const age = document.getElementById('Age')
const form = document.getElementById('form')

form.addEventListener('submit', (e) => {
    let isValid = true;
    e.preventDefault(); // 阻止表单默认刷新行为

    // 手机号验证:必须是11位纯数字
    const phoneVal = Cp_num.value.trim();
    if (!phoneVal || isNaN(phoneVal) || phoneVal.length !== 11) {
        alert("手机号必须是11位数字!");
        isValid = false;
    }

    // 年龄验证:非空且为有效数字
    const ageVal = age.value.trim();
    if (!ageVal || isNaN(ageVal)) {
        alert("年龄必须是有效数字!");
        isValid = false;
    }

    if (isValid) {
        popUp(); // 验证通过执行你的弹窗逻辑
    }
})

3. 可选优化(体验提升)

把手机号输入框的type="text"改成type="tel",这样移动端打开时会自动弹出数字键盘,用户输入更方便:

<input id="Cp_Number" type="tel" class="form-control" placeholder="Enter Cellphone Number..." required>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:50:31