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
相关产品推荐
相关产品推荐

