Явно очистить поле формы, даже если значение = "" - PullRequest
0 голосов
/ 10 июня 2018

Я отображаю данные из моей базы данных в виде HTML, чтобы пользователь мог их редактировать.

<input type="text"  id="name" placeholder="Name" required = " true"  value = <?php if(isset($_SESSION['name'])) echo $_SESSION['name'] ;?>>

Есть причина, по которой мне пришлось использовать хранилище сеансов.Проблема здесь в том, что когда я обновляю страницу, она отображает старое значение, сохраненное в сеансе.Есть ли способ явно очистить форму при ее загрузке?Я пробовал JavaScript и jQuery reset (), который не работает, поскольку не может быть очищен пользовательским вводом.
Редактировать.Это не тот случай, когда речь идет об автозаполнении, точнее, у меня есть другая форма для чтения уникального идентификатора, который я использую для запроса из базы данных.Результаты базы данных хранятся в хранилище сеансов, и я отображаю их во 2-й форме.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Решение оказалось очень простым.Я уничтожил сессию после отображения в функции jQuery on click.

<?php session_destroy(); ?>
0 голосов
/ 10 июня 2018

reset просто восстановит элементы в состояние, которое диктует разметка, что не поможет.

Вместо этого вам нужно установить defaultValue элементов на новое значение по умолчанию, а затемиспользуйте reset (или просто присвойте value одновременно).defaultValue - это свойство, которое отражает атрибут value.

Пример:

setTimeout(function() {
  console.log("Clearing defaultValue and resetting...");
  $("#the-form input").prop("defaultValue", "");
  $("#the-form")[0].reset();
}, 800);
<form id="the-form">
<input type="text"  id="name" placeholder="Name" required = " true"  value = "value from markup">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Чтобы выяснить, нужно ли вам это сделать, вы можете сохранить идентификатор сеанса PHP на клиентской стороне sessionStorage (в соответствии с Предложение Луиса Патриса Бессетта ) и делайте это только тогда, когда они совпадают.Вдоль этих строк нагрузки:

var phpSessionId = <?php echo json_encode(session_id())?>;
if (sessionStorage.getItem("phpsessionid") != phpSessionId) {
    sessionStorage.setItem("phpsessionid", phpSessionId);
} else {
    // reset the fields -- perhaps even to values you stored in `sessionStorage`
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...