为什么在Javascript里用window.location.href=‘a.html’语句不能实现网页跳转啊。浏览器还是显示原网页。

脚本是:<scriptlanguage="Javascript1.2">functionisRegisterUserName(obj){varvalue=obj.stri... 脚本是:
<script language="Javascript1.2">
function isRegisterUserName(obj)
{
var value = obj.string.value; // 得到输入框中的值
var pattern = /^001|002|003$/; // 创建正则表达式对象
flag = pattern.test(value); // 测试匹配
if(flag==0){
alert("错误,请重新输入!");
return false;
}
window.location.href='index.html';
return true;
}
</script>
网页里的表单是:
<form name="form1" method="get" onSubmit="return isRegisterUserName(this)">
<input name="string" type="text">
<input type="submit" value="确定">
</form>
直接试着用window.location.href属性设置就可以实现自动跳转,但是为什么把它放在function里面就不行了呢?我想实现的是如果输入字符串正确(匹配)就跳转,否则就不跳转的功能
展开
 我来答
webscape
推荐于2017-11-24 · TA获得超过176个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:46.1万
展开全部
因为当输入正确时,isRegisterUserName return true,这样浏览器就会执行表单提交的默认动作 - 对于没有指明action的form,提交到当前页面(这可以通过点击确定后,地址栏变为“当前页地址?string=value"看出,因为method是get,所以表单键/值加在了地址后面)。把最后的return true改为return false就正常了。

虽然跳转代码是在return true的前面,看起来应该是先执行跳转,但是浏览器都不是这样实现的,所以只能用return false阻止掉浏览器的默认动作。
追问
牛啊,不过我测试了所有主流浏览器以后发现chrome/opera/firefox什么的都可以跳转了,只有用IE9的时候,还是不行,就像你说的,地址栏最后出现了?string=value,然后就停在本界面了,这是为什么呢?
追答
IE9我试过,应该也可以的。你试的时候浏览器下面有没有黄色的提示说阻止了ActiveX或是Script,如果有的话选择允许执行。
百度网友50d1865ef
2011-07-18 · TA获得超过559个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:331万
展开全部
在form里加个action不就可以了
<form name="form1" method="get" onSubmit="return isRegisterUserName(this)" action="'index.html">
<input name="string" type="text">
<input type="submit" value="确定">
</form>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baijfp888
2011-07-18
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
要这行代码前加上alert("flag");测试下有没有执行到这行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lujian863
2014-03-26 · TA获得超过219个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:285万
展开全部
window.location.href='index.html';
改成:
window.location="index.html";
href不要。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式