如果javascript条件为true则重定向不起作用

时间:2013-06-21 09:18:24

标签: php javascript html validation redirect

我有一个表单,我在javascript函数中验证字段。验证后,我想重定向到另一个页面。我正在尝试这个形式:

<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.href document.location.href ,而不是 window.location 。我真的觉得我在剧本里面遗漏了一些东西......如果你发现了什么,请让我搞清楚。谢谢!

我已尝试在内部提出警告并发出2秒钟,然后再进行重定向。如果我不提出警告,我的重定向不起作用。这是代码:

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

6 个答案:

答案 0 :(得分:1)

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

当真实条件第一次然后页面重定向到给定URL并且条件第二次不重定向。

答案 1 :(得分:0)

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

替换上面的内容
return rtn;

如果我们返回false,则表单不会提交,否则提交。

此外,表单会提交到“操作”,因此请确保您的表单“操作”属性设置为“http://test.dev

答案 2 :(得分:0)

提醒此代码中的内容

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

如果警报出来,你就到了这里。如果没有,你的第一个条件是错误的。我们分开哪里有问题。

答案 3 :(得分:0)

将表单标记的action设置为http://test.dev。就是这样。

修改:如果您使用http://test.dev,您从未想过表单数据可能无法发布到window.location.href吗?

答案 4 :(得分: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>

答案 5 :(得分:0)

尝试使用jquery ajax重定向true语句 $ .ajax({url:'search.php',data:“check_qc =”+ qc,async:false, success:function(response){if(response == 1){window.location =“http://google.com”; return false;}}});