如何使用javascript重定向提交时的当前选项卡?

时间:2011-05-09 17:29:51

标签: php javascript

我做了一个小例子来学习javascript和php。 我尝试使用window.open()和window.location()但它会打开一个新选项卡,当前选项卡仍会重定向到“login.php”

<html>
    <head>

        <script type = "text/javascript">
            function checksubmit(form){
                if ( form.id.value == ""  || form.password.value == "" ){
                    $check = confirm("Don't leave id or password blank !\nPress OK to continue ... ");
                    if ($check)
                        window.open("http://www.google.com/");
                    else 
                        window.location("http://www.yahoo.com");    

                }
            }
        </script>
    </head>
<body>
        <form align = 'right' method = 'post' action = 'login.php'>
            ID : <input type = 'text' name = 'id' maxlength = 20 /></br>
            Password : <input type = 'password' name = 'pass'  /></br>
            <input type = 'submit' name = 'submit' value = 'Login' onclick = "checksubmit(this.form)"/>
        </form>
    </body>
</html>

我希望我的页面在按下确定或取消时不会重定向到“login.php”。

3 个答案:

答案 0 :(得分:2)

你的问题有点令人困惑;这就是我认为你在问的问题:

  1. 您有一个用户可以填写的表单,该表单会将其发送到login.php
  2. 如果他们忘记了用户名或密码,你想确保他们不会被发送到login.php
  3. 您想使用Yahoo和Google网址测试window.openwindow.location,但这些网址实际上并不是您要制作的网站的一部分,只是用于测试。
  4. 所以,考虑到这一点:

    window.openwindow.location是一个好主意,但在这种情况下,它们并不是您想要的。如上所述,关键是您可以通过从false方法返回onclick取消对元素的点击:

    <html>
        <head>
    
            <script type = "text/javascript">
                function checksubmit(form){
                        if ( form.id.value == ""  || form.pass.value == "" ){
                            $check = alert("Don't leave id or password blank !\nPress OK to continue ... "); 
                            return false;
                        }
                    return true;
                    }
            </script>
        </head>
    <body>
            <form align = 'right' method = 'post' action = 'login.php'>
                ID : <input type = 'text' name = 'id' maxlength = 20 /></br>
                Password : <input type = 'password' name = 'pass'  /></br>
                <input type = 'submit' name = 'submit' value = 'Login' onclick = "return checksubmit(this.form)"/>
            </form>
        </body>
    </html>
    

    这样做,如果用户仍然需要输入他们的用户名/密码,取消提交表单。我还将confirm更改为alert,因为您不希望它们为“是”或“否”,而只是“确定”继续。

    希望这有帮助!

答案 1 :(得分:1)

您已将其设置为window.location,因此它将始终重定向,因为这就是您要告诉它的内容。

window.openwindow.location类似,但会打开一个新的标签/窗口。同样,它将重定向。

你需要删除它们。

如果您不希望表单在空白时提交,则需要在表单上的return false事件中添加onsubmit,就像我在这里:http://jsbin.com/emopo3/2/edit

或者,这是该示例中的代码:

myform = document.getElementById('myform');

myform.onsubmit = function(){
  if(document.getElementById('myinput').value == ''){
    return false;
  }
  else{
    //The form will go through...
  }
};

<form id="myform" action="http://google.com">
    <input id="myinput" type="text" value="">
    <input type="submit" value="Submit">
</form>

如果输入的值为空,则由于return false而不会。如果它有值,它会将您发送给Google。

答案 2 :(得分:0)

为什么你的支票变量是$?你不能在下面声明它。此外,您是否可以将其发送到警报框以查看它的价值是什么?

<script type = "text/javascript">
    function checksubmit(form) {
        if ( form.id.value == ""  || form.password.value == "" ) {
            var check = confirm("Don't leave id or password blank !\nPress OK to continue ... ");
            alert(check);                     
            if (check)
                window.open("http://www.google.com/");
            else
                window.location("http://www.yahoo.com");
        }             
    }         
</script>