根据邮政编码输入值将表单提交至对应指定URL的实现求助
解决根据邮政编码跳转不同页面的表单提交问题
没问题,我来帮你搞定这个需求!核心思路是拦截表单的默认提交行为,先验证输入的邮政编码,根据范围动态设置表单的action属性,再手动提交表单。下面是完整的实现方案:
步骤说明
- 拦截表单提交事件,避免默认跳转
- 提取并格式化邮政编码(去除横杠,转为数字方便范围判断)
- 根据预设的邮政编码范围,设置对应的跳转URL
- 验证通过后提交表单
完整代码实现
HTML 部分(仅调整表单事件绑定,其余保留)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://rawgit.com/RobinHerbots/Inputmask/5.x/dist/jquery.inputmask.min.js"></script> <div id="form-cp"> <!-- 移除inline的onsubmit属性,改用JS绑定事件更灵活 --> <form method="get" action="" class="needs-validation"> <input type="text" name="cp" value="" size="8" maxlength="8" minlength="8" class="postal-code form-control-lg" aria-invalid="false" placeholder="0000-000" required> <button type="submit" class="btn btn-primary">Send Data</button> </form> </div>
JavaScript 部分(整合验证与跳转逻辑)
$(document).ready(function() { // 初始化邮政编码输入掩码,保留你原有的配置 $(".postal-code").inputmask("9999-999", { "placeholder": "0", "onincomplete": function() { alert('Insere um Código Postal válido'); } }); // 绑定表单提交事件,处理跳转逻辑 $(".needs-validation").on("submit", function(e) { // 先阻止表单默认提交行为,我们自己控制跳转 e.preventDefault(); // 获取输入的邮政编码,去掉横杠后转为数字 const rawCode = $(".postal-code").val(); const cleanCode = rawCode.replace("-", ""); const numericCode = parseInt(cleanCode, 10); // 双重保险:验证输入是否有效 if (isNaN(numericCode) || cleanCode.length !== 7) { alert('Insere um Código Postal válido'); return; } // 根据邮政编码范围设置目标URL let targetUrl = ""; if (numericCode >= 1000000 && numericCode <= 2999999) { targetUrl = "landing1.html"; } else if (numericCode >= 3000000 && numericCode <= 4000999) { targetUrl = "landing2.html"; } // 这里可以继续添加更多范围规则,比如: // else if (numericCode >= 4001000 && numericCode <= 5999999) { // targetUrl = "landing3.html"; // } // 如果匹配到有效范围,设置表单action并提交 if (targetUrl) { $(this).attr("action", targetUrl); this.submit(); } else { alert('Código Postal fora dos intervalos definidos'); } }); });
关键细节解释
- 输入掩码保留:完全保留了你原本的inputmask配置,确保用户输入符合
9999-999的格式,输入不完整时会弹出提示。 - 提交事件拦截:用
e.preventDefault()阻止默认提交,这样我们就能先完成范围判断再决定跳转方向。 - 编码格式化:通过
replace("-", "")去掉横杠,转为整数后更方便进行区间比较,避免字符串比较的潜在问题。 - 动态设置action:确定目标页面后,修改表单的
action属性,再调用this.submit()完成最终的提交。
这样就能实现根据用户输入的邮政编码,自动跳转到对应页面的功能啦!
内容的提问来源于stack exchange,提问作者kyllaz
相关产品推荐
相关产品推荐

