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

JQuery表单验证问题:密码不匹配时表单仍刷新,求排查

解决密码不匹配时表单仍刷新的问题

我看了你代码里的几个关键问题,这就是阻止刷新没生效的核心原因,咱们一步步修正:

你的代码里的错误点:

  • 你用$("#password")拿到的是jQuery包装的DOM对象,不是输入框里的实际密码值,必须调用.val()才能获取文本内容
  • 判断不相等的时候用了/=,这是赋值运算符,不是比较!正确的比较应该用!==(严格不等于,推荐用这个避免类型问题)或者!=
  • preventDefault()需要绑定到表单的submit事件上,并且要接收事件参数,直接调用是无效的;另外绑定按钮的click不如绑定表单的submit靠谱,因为用户按回车也能提交表单
  • alert(password2)只会弹出jQuery对象的字符串表示,不是密码值,要改成alert(password2.val())

修正后的完整代码:

HTML部分(建议把输入框放在<form>标签里,这是表单的正确结构):

<form id="registerForm">
  <label for="password">Lösenord: </label>
  <input type="password" class="form-control" id="password" name="password" placeholder="Lösenord" required>
  <p></p>
  <label for="password2">Upprepa Lösenord: </label>
  <input type="password" class="form-control" id="password2" name="password2" placeholder="Lösenord" required>
  <p></p>
  <button type="submit" id="submit">提交</button>
</form>

JavaScript部分:

$(document).ready(function() {
  // 绑定表单的submit事件,而不是按钮的click
  $("#registerForm").submit(function(event) {
    // 获取两个密码的实际值
    var password1 = $("#password").val();
    var password2 = $("#password2").val();
    
    // 严格比较两个密码是否不相等
    if (password1 !== password2) {
      // 阻止表单默认的提交刷新行为
      event.preventDefault();
      // 可以加个提示告诉用户密码不匹配,体验更好
      alert("两次输入的密码不匹配,请重新输入!");
    }
  });
});

额外提示:

  • 用submit事件而不是click的原因是,表单的提交行为不止按钮点击一种(比如输入完按回车),绑定表单的submit能覆盖所有提交场景
  • 用!==严格比较可以避免一些隐式类型转换的问题,比如空字符串和undefined的误判
  • 除了alert,你也可以在页面上添加一个错误提示元素(比如<div class="error"></div>),把提示内容放在里面,比弹窗更友好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:31:53