Я делаю простую форму, с которой сталкиваюсь, когда я отправляю значения формы, которые все еще остаются в поле. и я хочу очистить его после УСПЕШНОГО представления. Пожалуйста помоги.
вот мой код для формы ..
<label class="w">Plan :</label> <select autofocus="" name="plan" required="required"> <option value="">Select One</option> <option value="FREE Account">FREE Account</option> <option value="Premium Account Monthly">Premium Account Monthly</option> <option value="Premium Account Yearly">Premium Account Yearly</option> </select> <br> <label class="w">First Name :</label><input name="firstname" type="text" placeholder="First Name" required="required" value="<?php echo $_POST['firstname'];?>"><br> <label class="w">Last Name :</label><input name="lastname" type="text" placeholder="Last Name" required="required" value="<?php echo $_POST['lastname'];?>"><br> <label class="w">E-mail ID :</label><input name="email" type="email" placeholder="Enter Email" required="required" value="<?php echo $_POST['email'];?>"><br> <label class="w">Password :</label><input name="password" type="password" placeholder="********" required="required" value="<?php echo $_POST['password'];?>"><br> <label class="w">Re-Enter Password :</label><input name="confirmpassword" type="password" placeholder="********" required="required" value="<?php echo $_POST['confirmpassword'];?>"><br> <label class="w">Street Address 1 :</label><input name="strtadd1" type="text" placeholder="street address first" required="required" value="<?php echo $_POST['strtadd1'];?>"><br> <label class="w">Street Address 2 :</label><input name="strtadd2" type="text" placeholder="street address second" value="<?php echo $_POST['strtadd2'];?>"><br> <label class="w">City :</label><input name="city" type="text" placeholder="City" required="required" value="<?php echo $_POST['firstname'];?>"><br> <label class="w">Country :</label><select autofocus="" id="a1_txtBox1" name="country" required="required" placeholder="select one" value="<?php echo $_POST['country'];?>">
Любая помощь будет назначена
Они остаются в полях, потому что вы явно говорите PHP, чтобы заполнить форму представленными данными.
<input name="firstname" type="text" placeholder="First Name" required="required" value="<?php echo $_POST['firstname'];?>"> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ HERE
Просто удалите это, или если вы хотите, чтобы условие не делало этого, делайте оператор if
для этого echo
или просто $_POST
поля $_POST
.
$_POST = array(); // lets pretend nothing was posted
Или, если удастся, перенаправить пользователя на другую страницу:
header("Location: success.html"); exit; // Location header is set, pointless to send HTML, stop the script
Что, кстати, является предпочтительным методом. Если вы сохраняете пользователя на странице, полученной с помощью метода POST
, если он обновит страницу, форма будет отправлена снова.
Вы можете использовать .reset()
в своей форме.
$(".myform")[0].reset();
Данные POST, в которых хранятся представленные данные формы, отражаются в форме, например:
<input name="firstname" type="text" placeholder="First Name" required="required" value="<?php echo $_POST['firstname'];?>"
Либо очистите данные POST после того, как вы сделали это с формой, то есть все входы были в порядке, и вы выполнили все ваши результаты из формы.
Или, как только вы определили, что форма одобрена и вы сделали все, что бы вы ни действовали из формы, перенаправите пользователя на новую страницу, чтобы сказать «все сделано, спасибо» и т. Д.
header('Location: thanks.php'); exit();
Это останавливает данные POST, они известны как «Post / Redirect / Get»:
http://en.wikipedia.org/wiki/Post/Redirect/Get
Метод Post / Redirect / Get (PRG) и использование другой страницы также гарантирует, что если пользователи нажмут обновление браузера или кнопку перехода назад в другое место, ваша форма не будет отправлена повторно.
Это означает, что если ваша форма вставляется в базу данных или отправляется кому-то по электронной почте (и т. Д.), Без метода PRG значения будут (вероятно) вставлены / отправлены по электронной почте каждый раз, когда они нажмут обновление или перейдут на страницу с помощью кнопки history / back.
Я столкнулся с этой подобной проблемой и не хотел использовать header () для перенаправления на другую страницу.
Решение:
Используйте $_POST = array();
для сброса массива $_POST
в верхней части формы вместе с кодом, используемым для обработки формы.
Сообщения об ошибке или успехе могут быть добавлены условно после формы. Надеюсь это поможет 🙂
Поместите onClick
в кнопку submit:
<input type="text" id="firstname"> <input type="text" id="lastname"> <input type="submit" value="Submit" onClick="clearform();" />
В <head>
определите функцию clearform () и установите для значения текстового поля значение ""
:
function clearform() { document.getElementById("firstname").value=""; //don't forget to set the textbox id document.getElementById("lastname").value=""; }
Таким образом текстовое поле будет очищено при нажатии кнопки отправки.
Я просто пытался исправить ту же ошибку, я, наконец, исправил ее, поэтому я скопирую часть кода, возможно, это поможет вам.
<input type="text" name="usu" id="usu" value="<?php echo $usu;?>" ></input> <input type="text" name="pass" id="pass" value="<?php echo $varpass;?>"></input>
это те входы, которые я хотел очистить после нажатия на мою кнопку.
И здесь php-код:
$query= "INSERT INTO usuarios (tipo, usuario, password) VALUES ('".$vartipo."', '".$usu."', '".$varpass."')"; if (!mysqli_query($conexion,$query)){ die('Error: ' . mysqli_error($conexion)); } else{ $usu = ''; $varpass= ''; $result = '<div class="result_ok">El usuario se ha registrado con éxito! <div>'; }
$ usu = '';
$ varpass = '';
это линии, которые очищают входы: D
этот код поможет вам
if($insert){$_POST['name']="";$_POST['content']=""}
Если вы хотите, чтобы поле формы было ясно, вы должны добавить только задержку в событии onClick, например:
<input name="submit" id="MyButton" type="submit" class="btn-lg" value="ClickMe" onClick="setTimeout('clearform()', 2000 );" onClick="setTimeout('clearform()', 1500 );" . in 1,5 seconds its clear document.getElementById("name").value = ""; <<<<<<just correct this document.getElementById("telephone").value = ""; <<<<<correct this
По clearform()
, я имею в виду вашу функцию поля очистки.