2011-05-24 71 views
11

所以我有一个表格和onsubmit="return reg_check(this)"其中reg_check()是一个JavaScript函数的头应该检查表单数据,因为它的任务之一是检查是否用户名是在需要php的数据库中,我想重定向到执行此任务的php页面。window.location.href不工作在窗体上onsubmit

问题是:window.location.href不工作!这里的功能(缩版),当然还有main.php只是一个随机的网页,我得到:

function reg_check(myForm) { 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    alert("after redirect.."); 
} 

before redirectafter redirect警报工作,它只是不重定向?它仍然在同一页面。

另外,如果我试图通过只输入从身体到重定向:

<script type="text/javascript"> 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    alert("after redirect.."); 
</script> 

它重定向。

任何想法,我怎么能得到这个工作?

回答

35

您从reg_check功能需要return false;,然后在你的onsubmit,将其更改为:

onsubmit="return reg_check(this);" 

这将取消表单提交。如果您想让表单正常提交,只需从reg_check返回true即可。

编辑(更清楚你需要添加返回假;从功能):

function reg_check(myForm) { 
    alert("before redirect.."); 
    window.location.href = "http://localhost/main.php?width=" + screen.width + "&height=" + screen.height; 
    return false; 
} 
+1

嗯感谢小费探索细节,但它仍然无法正常工作 – Noura 2011-05-24 11:52:10

+0

@Nara遗憾没我说的没错,我已经更新了答案,你现在应该很好。 – Craig 2011-05-24 11:55:22

+0

啊然后没什么新鲜的。这就是我已经使用 – Noura 2011-05-24 12:01:16

2

我看到那里,我不得不做以下的IE问题:

window.location.assign(url); 

具体在一个jQuery AJAX成功处理程序。无法真正推测为什么除了我以外,它的工作。

我其实

window.location.replace(url) 

其中在历史替换当前页面。好戏!

-1

[已解决]我有一个类似的问题,重定向到客户端脚本的其他网址。实现了window.open函数,而且它工作。例如,你可能会为你的html控件事件使用onchange事件调用一个函数ChangeCity()。

function ChangeCity() { 
    switch ($("#currentCity").val()) { 
     case "NY": 
       var url = '@Url.Action("New York City", "Home", new { @area = "" },Request.Url.Scheme)'; 
      window.location.href = url; 
      window.open(url,"_top"); 
      return false; 

/*案例为其他城市*/

} 

你可能喜欢上window.location.href redirection -Alternative Solution

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17351719) – 2017-09-16 12:03:34