2013-06-21 103 views
0

我有一個表單,並且驗證了javascript函數中的字段。驗證之後,我想重定向到另一個頁面。我想這對於形式:如果javascript條件爲true,則重定向不起作用

<form action="" method="post" name="form" onsubmit="return validate()"> 
User Name : <input type="text" name="realname" size="19"><span id="realnameerror" ></span> 
<br> 
E-Mail : <input type="text" name="email" size="25"><span id="emailerror" ></span> 
<br> 
PhoneNo : <input type="phoneno" name="phoneno" maxlength="10" size="25"><span id="phonenoerror" ></span> 
<br> 
<input type="submit" value="Submit"> 
</form> 

這是驗證碼:

<script type="text/javascript"> 

var hasFocus = false; 
function checkName(form)  /* for name validation */ 
{...} 
function checkEmail(form)   /* for email validation */ 
{...} 
function validPhone(form)    /* for phone validation */ 
{...} 
function validate() 
{ 
hasFocus = false; 
var form = document.forms['form']; 
var ary=[checkName,checkEmail,validPhone]; 
var rtn=true; 
var z0=0; 
for (var z0=0;z0<ary.length;z0++) 
{ 
if (!ary[z0](form)) 
{ 
rtn=false; 
} 
} 
if (rtn) 
    { 
     window.location="http://test.dev"; 
     return rtn; 
    } 
    else return rtn; 
} 
</script> 

的一點是,所有的JavaScript功能都正常工作,我得到錯誤信息,如果有任何,但它不會讓我的重定向。奇怪的是,如果我把重定向到另一個腳本中,並且不進行驗證,它就會起作用。我不知道我做錯了什麼。我試圖把我的重定向爲另一種功能,只需要調用它像這樣:

if (rtn) { Redirect(); } 

,但它仍然不起作用。而不是window.location我也試過window.location.hrefdocument.location.href。我真的覺得有些東西是我在劇本里面失蹤的......如果你注意到了什麼,請讓我弄明白。謝謝!

我曾試圖在我的聲明中放置警報,並且它出現2秒鐘,然後重新生成。如果我不提醒說,我的重定向不起作用。這裏是代碼:

if (rtn) { 
    window.location="http://test.dev"; 
    alert(rtn); 
    } 
+0

#1瞭解縮進; #2控制檯比我們更快,更容易地發現錯誤,特別是對於半可讀代碼 – Shomz

+0

if(rtn) {//window.location="http://test.dev「; // return rtn; } –

+0

你做的一件事var url =「http://test.deve」;然後警報(url)。在提醒框中複製網址。粘貼到您的瀏覽器。然後你會知道它的工作與否。 –

回答

0

在代碼裏警報東西

if (rtn) 
{ 
    alert('you here'); 
    window.location="http://test.dev"; 
    return rtn; 
} 

如果警報來出去,你到了這裏。如果沒有,你的第一個條件是錯誤的。我們分裂出哪裏有問題。

+0

我在那裏放了一個警報,它顯示了大約2秒鐘的警報,然後重定向我去test.dev。如果我不在那裏提醒,它不會重定向!我不明白 –

0
if (rtn) 
    { 
     window.location="http://test.dev"; 
     return rtn; 
    } 
    else return rtn; 

替換上面

return rtn; 

形式不提交如果我們返回false否則提交。

此外,表單將提交到「行動」,所以一定要確保你的「動作」形式的屬性設置爲「http://test.dev

0

設置表格標籤的actionhttp://test.dev。就這些。

編輯:你從來沒有想過表單數據可能不被張貼到http://test.dev如果使用window.location.href

0

這是怎麼回事?

<form action="http://test.dev" method="post" name="form" onsubmit="return validate()"> 
<script type="text/javascript"> 

var hasFocus = false; 
function checkName(form)  /* for name validation */ 
{...} 
function checkEmail(form)   /* for email validation */ 
{...} 
function validPhone(form)    /* for phone validation */ 
{...} 
function validate() 
{ 
    hasFocus = false; 
    var form = document.forms['form']; 
    var ary=[checkName,checkEmail,validPhone]; 
    var rtn=true; 
    var z0=0; 
    for (var z0=0;z0<ary.length;z0++) 
    { 
    if (!ary[z0](form)) 
    { 
     rtn=false; 
    } 
} 
if (rtn) 
{ 
    return rtn; 
} 
else return rtn; 
} 
</script> 
0

嘗試jQuery的AJAX重定向真實的陳述 $阿賈克斯(網址:{url: 'search.php中' 數據: 「check_qc =」 + QC,異步:假, 成功:函數(響應){如果(response == 1){window.location =「http://google.com」; return false;}}});

1
if (rtn) 
{ 
    alert('hello there'); 
    window.location="http://new/new.php"; 
    return true; 
}else{ 
    return false; 
} 

當真實情況第一,然後頁面重定向到給定的網址和條件第二不重定向。