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

根据邮政编码输入值将表单提交至对应指定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');
        }
    });
});

关键细节解释

  1. 输入掩码保留:完全保留了你原本的inputmask配置,确保用户输入符合9999-999的格式,输入不完整时会弹出提示。
  2. 提交事件拦截:用e.preventDefault()阻止默认提交,这样我们就能先完成范围判断再决定跳转方向。
  3. 编码格式化:通过replace("-", "")去掉横杠,转为整数后更方便进行区间比较,避免字符串比较的潜在问题。
  4. 动态设置action:确定目标页面后,修改表单的action属性,再调用this.submit()完成最终的提交。

这样就能实现根据用户输入的邮政编码,自动跳转到对应页面的功能啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:02:34