#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:
Ваш вопрос немного сбивает с толку; это то, что, я думаю, вы спрашиваете:
- У вас есть форма, которую пользователи могут заполнить, которая отправит их на login.php
- Вы хотите убедиться, что они не отправляются на login.php если они забудут свое имя пользователя или пароль
- Вы хотели протестировать,
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. ах. Я неправильно использовал «$». Я пробовал ваши коды, но все еще на другой вкладке, и не смог увидеть это значение