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

JavaScript中函数返回true后如何重定向到外部URL

问题解决:验证通过后实现外部URL重定向

你的问题出在跳转逻辑的位置、调用方式错误,以及表单默认提交行为干扰了跳转流程。以下是修正后的完整代码和关键说明:

修正后的代码

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>login</title>

<!-- 合作伙伴编号验证逻辑 -->
<script>
function checkNumber(form) {
  var partnernr = form.partnernr.value;
  // 简化正则,去掉多余的?确保匹配严格符合格式的内容
  var regex1 = /^[0-9]{6}$/;
  var regex2 = /^[0-9]{5,6}[+\-\/][0-9]$/;

  // 合并判断逻辑,更简洁
  if (!regex1.test(partnernr) && !regex2.test(partnernr)) {
    alert('你的合作伙伴编号无效。');
    form.partnernr.focus();
    return false;
  }

  // 验证通过后执行跳转
  window.location.href = 'https://www.xyz.de';
  // 返回false阻止表单默认提交,避免页面刷新打断跳转
  return false;
}
</script>

</head>

<body>
<form action="" method="post" onsubmit="return checkNumber(this)">
  <!-- 修复placeholder属性多余的引号 -->
  <input type="text" name="partnernr" placeholder="例如:600000 / 600000-1" />
  <input type="submit" name="submit" class="ikbsendbutton postidentbutton" value="启动POSTIDENT验证" />
</form>
</body>
</html>

关键修正说明

  1. 跳转逻辑位置调整:把跳转代码移到checkNumber函数内部的验证通过分支里,原代码的跳转语句写在函数外,页面加载时就会执行,完全不符合需求。
  2. 正确调用跳转方法:window.location.replace是方法,需要用window.location.replace('https://www.xyz.de')调用(而非赋值);也可以用window.location.href = 'url',前者不会留下历史记录,后者会保留跳转前的页面历史。
  3. 阻止表单默认提交:验证通过后必须返回false,否则表单会执行默认提交行为(action为空时会刷新当前页面),直接打断跳转流程。
  4. 正则与语法修复:简化正则表达式去掉多余的?,避免匹配空值或不完整内容;同时修复输入框placeholder属性后多余的引号,修正HTML语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:21:03