jQuery手机号按键验证需求:支持08/+62开头及长度限制
jQuery实现手机号输入验证(08/+62开头+长度限制)
嘿,我来帮你完善这个手机号输入的验证逻辑!刚好可以用jQuery轻松实现你要的两种开头规则,还能处理长度超限的提示。
先看完整实现
HTML结构
首先准备输入框和错误提示元素:
<input type="text" id="phone-input" placeholder="请输入手机号(08或+62开头)"> <div id="error-tip" style="color: #dc3545; margin-top: 8px; display: none;"></div>
jQuery验证代码
把这段代码放到你的脚本里(确保已经引入jQuery):
$(document).ready(function() { // 处理按键输入事件 $('#phone-input').on('keypress', function(e) { // 允许必要的控制键:退格、删除、Tab、回车、Esc等,还有Ctrl快捷键 if ($.inArray(e.which, [8, 9, 13, 27, 46]) !== -1 || (e.which === 65 && e.ctrlKey) || (e.which === 67 && e.ctrlKey) || (e.which === 86 && e.ctrlKey) || (e.which === 88 && e.ctrlKey)) { return; } const currentVal = $(this).val(); const newChar = String.fromCharCode(e.which); const newVal = currentVal + newChar; const $errorTip = $('#error-tip'); // 第一步:检查输入后长度是否超过14位 if (newVal.length > 14) { $errorTip.text('输入长度不能超过14位').show(); e.preventDefault(); // 阻止继续输入 return; } // 第二步:分阶段验证格式 // 输入过程中(长度<8):只验证开头是否合法,后面只能是数字 const partialPattern = /^(08|\+62)\d*$/; // 长度达标后:验证完整格式(开头+数字长度符合总8-14位) const fullPattern = /^(08\d{6,12}|\+62\d{5,11})$/; if (newVal.length >= 8) { if (!fullPattern.test(newVal)) { $errorTip.text('请输入以08或+62开头,长度8-14位的号码').show(); e.preventDefault(); return; } } else { if (!partialPattern.test(newVal)) { $errorTip.text('号码必须以08或+62开头').show(); e.preventDefault(); return; } } // 验证通过,隐藏错误提示 $errorTip.hide(); }); // 额外处理粘贴事件,防止粘贴不符合规则的内容 $('#phone-input').on('paste', function() { const $errorTip = $('#error-tip'); setTimeout(() => { const pastedVal = $(this).val(); const fullPattern = /^(08\d{6,12}|\+62\d{5,11})$/; if (!fullPattern.test(pastedVal)) { $errorTip.text('请粘贴以08或+62开头,长度8-14位的号码').show(); $(this).val(''); // 清空无效内容 } else { $errorTip.hide(); } }, 100); }); });
代码逻辑解释
- 控制键放行:先允许退格、删除、Tab等必要操作,还有Ctrl+A/C/V/X这些快捷键,避免影响用户正常输入体验。
- 长度超限拦截:预判输入后的总长度,超过14位直接提示并阻止输入。
- 分阶段验证:
- 输入初期(长度<8):只验证开头是否是
08或+62,并且后续只能输入数字,避免用户一开始就输入错误格式。 - 长度达标后(>=8):验证完整格式,确保
08开头后有6-12位数字(总长度8-14),+62开头后有5-11位数字(总长度8-14)。
- 输入初期(长度<8):只验证开头是否是
- 粘贴处理:额外监听粘贴事件,防止用户粘贴不符合规则的内容,粘贴后立即验证,无效则清空并提示。
内容的提问来源于stack exchange,提问作者Ary Maulana
相关产品推荐
相关产品推荐

