Bootstrap 3 Validator修改密码表单验证实现技术咨询
Bootstrap 3 修改密码表单验证实现指南(基于Validator插件)
兄弟,既然你已经搞定了登录表单的基础验证,那修改密码这块的逻辑其实大同小异,只是多了几个专属的验证规则——比如新密码长度限制、新密码和确认密码必须匹配,还有旧密码的必填校验。我结合你给出的表单结构,给你整理一套完整的实现方案:
首先,先把你的表单补全(毕竟你给的代码没写完,修改密码肯定需要旧密码、新密码、确认新密码这几个核心输入框),完整的HTML结构应该是这样:
<form id="changepassword-form" role="form" data-toggle="validator" class="form-quote" action="/changepasswordpost" method="POST"> <input name="changepassword-id" type="hidden" value="{{ id }}"/> <input name="changepassword-token" type="hidden" value="{{ token }}"/> <!-- 旧密码输入框 --> <div class="form-group"> <label for="old-password">旧密码</label> <input type="password" class="form-control" id="old-password" name="old-password" data-rule-required="true" data-msg-required="请输入您的旧密码"> <div class="help-block with-errors"></div> </div> <!-- 新密码输入框 --> <div class="form-group"> <label for="new-password">新密码</label> <input type="password" class="form-control" id="new-password" name="new-password" data-rule-required="true" data-rule-minlength="6" data-rule-maxlength="16" data-msg-required="请设置新密码" data-msg-minlength="新密码长度不能少于6位" data-msg-maxlength="新密码长度不能超过16位"> <div class="help-block with-errors"></div> </div> <!-- 确认新密码输入框 --> <div class="form-group"> <label for="confirm-password">确认新密码</label> <input type="password" class="form-control" id="confirm-password" name="confirm-password" data-rule-required="true" data-rule-equalTo="#new-password" data-msg-required="请再次输入新密码" data-msg-equalTo="两次输入的密码不一致"> <div class="help-block with-errors"></div> </div> <button type="submit" class="btn btn-primary">提交修改</button> </form>
接下来是验证规则的核心说明:
- 旧密码:通过
data-rule-required="true"标记为必填项,data-msg-required自定义必填提示语 - 新密码:除了必填,还加了长度限制(6-16位),用
data-rule-minlength和data-rule-maxlength实现,同时对应自定义长度提示 - 确认新密码:必填+和新密码匹配,
data-rule-equalTo="#new-password"指定要匹配的目标输入框ID,这个是修改密码表单的核心规则
然后,确保你的页面已经正确引入了依赖文件(你登录表单能用的话,这部分应该已经搞定了,再核对下):
- jQuery(必须在Bootstrap和Validator之前引入)
- Bootstrap 3的CSS和JS
- Validator插件的CSS和JS
最后,如果你需要手动初始化验证器(有时候data-toggle="validator"自动初始化可能会有延迟),可以加一段JS代码:
$(document).ready(function() { // 初始化修改密码表单验证 $('#changepassword-form').validator({ disable: true // 验证不通过时禁用提交按钮,提升用户体验 }); // 表单提交前的自定义逻辑(比如需要后端校验旧密码的话,可以在这里加AJAX请求) $('#changepassword-form').on('submit', function(e) { // 如果验证不通过,阻止默认提交 if (!$(this).hasClass('has-success')) { e.preventDefault(); } // 要是想用AJAX异步提交代替默认表单提交,也可以这么写: // e.preventDefault(); // $.post($(this).attr('action'), $(this).serialize(), function(res) { // // 处理后端返回的结果,比如成功提示或错误反馈 // }); }); });
另外给你提几个实用的小细节:
- 每个输入框对应的
.help-block with-errors是Validator插件用来显示错误提示的容器,必须加上 - 如果需要后端校验旧密码的正确性,前端验证通过后,后端返回错误的话,可以通过JS手动给旧密码输入框添加错误提示,比如:
$('#old-password').parent().addClass('has-error').find('.help-block').text('旧密码不正确') - 密码输入框建议加
type="password",确保输入内容隐藏
内容的提问来源于stack exchange,提问作者M.E.
相关产品推荐
相关产品推荐

