запретить отправку формы от перенаправления / обновления с использованием JavaScript - PullRequest
0 голосов
/ 09 июля 2010

У меня есть страница, где вы можете вводить данные в серию текстовых полей (сгенерированных из php), и 2 кнопки, GetData и SaveData.Я хочу иметь возможность нажать клавишу ввода при редактировании текстовых полей, и он будет выполнять то же действие, что и нажатие кнопки SaveData (onclick = "onSave ();").Я могу добиться этого, выполнив следующие действия:

<form id="editForm" name="editForm" action="onSave();">

, но когда я нажимаю клавишу ввода, страница перенаправляется на страницу без поста php (например: www.www.mypage.com/index.php,вместо www.mypage.com/index.php?edit_data=true)

Как мне добиться того, чего я хочу?

Ответы [ 6 ]

5 голосов
/ 09 июля 2010

попробовать <form id="editForm" name="editForm" action="onSave();return false;">

2 голосов
/ 09 июля 2010

Ответ был (спасибо Ulysses за часть ответа):

<form id="editForm" name="editForm" onsubmit="onSave();return false;">

Мой onSave (); функция вернула false, но так как она делала перенаправление, мне пришлось поставить return false после onSave (); (объясните почему ??)

Спасибо!

2 голосов
/ 09 июля 2010

Убедитесь, что ваш onSave(); возвращает false, и измените действие на onsubmit="return onSave();".

0 голосов
/ 24 июня 2015

Ни одно из этих предложенных решений не помогло мне при использовании формы PHP.

По сути, я хотел создать простую форму, которая будет скрывать после отправки. Я использовал jQuery для прослушивания, когда произошел щелчок, но это не имело значения, потому что страница обновилась. Затем я использовал JS, чтобы предотвратить поведение по умолчанию для отправки (например, e.preventDefault();). Что я придумал ...

Я закончил тем, что установил действие формы на «#», чтобы оно изменило URL после отправки формы. Javascript читает URL-адрес для хэша и будет скрывать / показывать необходимые элементы, а затем перенаправлять через несколько секунд, если он присутствует. Да, страница все еще обновляется, но я получаю правильное поведение, используя JS с функцией обновления страницы.

Вот мой код:

<?php
include_once 'db.php'; // includes login to DB
if('POST' === $_SERVER['REQUEST_METHOD'] && isset($_POST['submit']))
{
  $ip = $_POST['publicIP'];

  $sql_query = "INSERT INTO tablename(PublicIP) VALUES('$ip')";
  mysql_query($sql_query);
}

?>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

<script>var publicIP = '<?php echo $_SERVER['REMOTE_ADDR']; ?>';</script>

<style>
form, [type="submit"] {
  max-width: 300px;
  margin: 0 auto;
}
form {
  border: 4px solid #757679;
  border-radius: 5px;
  box-shadow: 4px 4px 4px #A5A5A5;
}
[type="submit"] {
  border: none;
  height: 5em;
  width: 100%;
  font-size: 2em;
  color: #353638;
  background-color: #22D1F2;
  text-shadow: -1px -1px 1px #949494;
}
input[name="publicIP"] {
  display: none;
}
p { text-align: center; }

p, form {
  -webkit-transition: all 2s;
  -moz-transition: all 2s;
  -ms-transition: all 2s;
  -o-transition: all 2s
  transition: all 2s;
}
.hidden { 
  display: none !important; 
  -webkit-transition: all 2s;
  -moz-transition: all 2s;
  -ms-transition: all 2s;
  -o-transition: all 2s
  transition: all 2s;
}
</style>
</head>
<body>

<p class="hidden">Thank you for visiting. You will be redirected within 3 seconds.</p>

<form action="#" method="POST">
  <input type="text" name="publicIP">
  <button type="submit" name="submit" value="Submit">Submit</button>
</form>

<script>
document.querySelector('input[name=publicIP]').value = publicIP;
</script>

<script>
function redirect() {
  setTimeout(function() {
    window.location = "https://google.com";
  }, 3000);
}
if (window.top.location.href.indexOf('#') > 0) {
  $('form').addClass('hidden');
  $('p').removeClass('hidden');
  redirect();
}
</script>

</body>
</html>
0 голосов
/ 09 июля 2010
  1. button1 как кнопка отправки

  2. button2 как type = 'button' при клике button2 вызывает функцию javascript, которая создает файл с помощью window.location.href = "www.mypage.com/index.php?edit_data=true"

0 голосов
/ 09 июля 2010

хмм ... ты намеренно забыл метку метода = "POST"? :)

...