Как перенаправить текущую вкладку при отправке с помощью javascript?

#php #javascript

#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 «при нажатии ok или cancel.

Комментарии:

1. Помогли ли вам какие-либо из наших ответов?

Ответ №1:

Ваш вопрос немного сбивает с толку; это то, что, я думаю, вы спрашиваете:

  1. У вас есть форма, которую пользователи могут заполнить, которая отправит их на login.php
  2. Вы хотите убедиться, что они не отправляются на login.php если они забудут свое имя пользователя или пароль
  3. Вы хотели протестировать, window.open и window.location используя URL-адреса Yahoo и Google, но эти URL-адреса на самом деле не являются частью сайта, который вы хотите создать, они были просто для тестирования.

Итак, имея это в виду:

window.open и window.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. Я сделал, как вы сказали, но он вернул false, а затем продолжил ‘login.php ‘

2. Извините, это научит меня публиковать без проверки… Я допустил две ошибки: 1) вторая строка checksubmit просматривала form.password, но элемент называется form.pass 2) атрибут onclick должен быть «return checksubmit(this)», а не просто «checksubmit(this)». Я отредактировал свой первоначальный ответ.

Ответ №2:

У вас установлено значение window.location , поэтому оно всегда будет перенаправляться, поскольку это то, что вы говорите ему делать.

window.open похоже window.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.

Комментарии:

1. на самом деле вы задаете действие =» google.com » и хотя оператор if имеет значение true или false, он все равно перенаправляет на google.com что-то вроде «login.php «в моем примере

2. Ой, извините, вы можете настроить ее на любое действие, которое вы хотите. Затем поместите .open или что угодно в if / else

Ответ №3:

Почему в вашей переменной check указано $? Разве вы не можете объявить это, как показано ниже. Кроме того, вы можете отправить ее в окно предупреждения, чтобы узнать, каково ее значение?

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

Комментарии:

1. ах. Я неправильно использовал «$». Я пробовал ваши коды, но все еще на другой вкладке, и не смог увидеть это значение