2011-05-24 100 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