【问题标题】:How to redirect current tab on submit using javascript?如何使用 javascript 在提交时重定向当前选项卡?
【发布时间】:2011-05-09 17:29:50
【问题描述】:

我做了一个小例子来学习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”。

【问题讨论】:

  • 我们的回答对您有帮助吗?

标签: php javascript


【解决方案1】:

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

  1. 您有一个用户可以填写的表单,该表单会将他们发送到 login.php
  2. 您要确保他们在忘记用户名或密码时不会被发送到 login.php
  3. 您想使用 Yahoo 和 Google 网址测试 window.open 和 window.location,但这些网址实际上并不是您要创建的网站的一部分,它们只是用于测试。

所以,考虑到这一点:

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

<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,因为您不希望他们点击“是”或“否”,而只是“确定”继续。

希望这会有所帮助!

【讨论】:

  • 我确实像你说的但它返回 false 然后继续'login.php'
  • 对不起,那会教我不检查就发帖...我犯了两个错误:1)checksubmit的第二行正在查看form.password,但元素名为form.pass 2 ) onclick 属性需要是“return checksubmit(this)”,而不仅仅是“checksubmit(this)”。我已经编辑了我的原始回复。
【解决方案2】:

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

window.open 类似于window.location,但会打开一个新的选项卡/窗口。再次,它将重定向。

你需要删除那些。

如果您不想在表单为空白的情况下提交表单,则需要在表单上的onsubmit 事件中添加return false,就像我在这里一样: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。

【讨论】:

  • 实际上你设置了 action="google.com" 并且尽管 if 语句是 true 或 false 它仍然重定向到 google.com 就像我的例子中的“login.php”
  • 抱歉,您可以将其设置为您想要的任何操作。然后将 .open 或任何内容放入 if/else
【解决方案3】:

为什么你的检查变量上有 $?你不能像下面这样声明它。另外,您可以将其发送到警报框以查看其价值吗?

<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>

【讨论】:

  • 啊。我误用了“$”。我尝试了您的代码,但仍然是另一个选项卡,但看不到该值
猜你喜欢
  • 2016-03-01
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多