你好我正在mvc系统视图中构建一个表单,我希望在表单提交失败的情况下保留所有插入的值。如何做到这一点:我试过(例如一个字段):
<label for="user_firstname">Nume</label>
<input id="user_firstname" type="text" name="user_firstname" value=<?= $_POST['user_firstmane'] ?> >
<? if (isset($errors['user_firstname'])): ?>
<span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?>
但当然,第一次(当没有做任何后期操作时)它不会起作用。
最简单的方法是什么?有什么想法吗?
感谢
只需在javascript中循环遍历DOM,并将PHP$_POST数据放入input.value
<script type='text/javascript'>
<?php
echo "var jsArray = new Array();";
foreach ($_POST as $key=>$value){
echo "jsArray['$key'] = '$value';"; //turn it into a javascript array
}
?>
// Grab all elements that have tagname input
var inputArr = document.getElementsByTagName("input");
// Loop through those elements and fill in data
for (var i = 0; i < inputArr.length; i++){
inputArr[i].value = jsArray[inputArr[i].name];
}
</script>
我建议这样做:
<label for="user_firstname">Nume</label>
<input id="user_firstname" type="text" name="user_firstname" value=<?(isset($_POST['user_firstname']) ? $_POST['user_firstname'] : ""; ?>>
<? if (isset($errors['user_firstname'])): ?>
<span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?>
您在$_POST["user_firstmane"]中也有一个拼写错误,应该是$_POSD["user_filirstname"]:)
value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>"
您的意思是,当表单提交失败时,您想保留它的值吗?您可以使用$_SESSION将值存储在检查页中。例如:
check.php
<?php
session_start();
if (strlen($_POST['user_firstname']) < 5) { //for example
$_SESSION['user_firstname'] = $_POST['user_firstname'];
}
?>
在您当前的表单中,将value=<?= $_POST['user_firstmane'] ?>
更改为value="<?=$_SESSION['user_firstname']?>"
,因此:
<label for="user_firstname">Nume</label>
<input id="user_firstname" type="text" name="user_firstname" value="<?=$_SESSION['user_firstname']?>" />
<? if (isset($errors['user_firstname'])): ?>
<span class="error"><?= $errors['user_firstname']; ?></span>
<? endif; ?>
<input id="FirstName" name="FirstName" placeholder="First name" title="First Name" required="" tabindex="1" type="text" value="<?php if(isset($_POST['FirstName'])){ echo htmlentities($_POST['FirstName']);}?>"/>
提交表单失败后,此代码更容易保存表单信息。