如何回发文本字段中已有的数据?
例如: 如果我错过了一个必填字段,当我点击提交按钮时会出现错误。
如何使用php或javascript在该表单中回发数据,并将鼠标光标直接定位到导致错误的字段?
答案 0 :(得分:2)
PHP中没有自动方式来回写字段的信息,所以你只需要回复它。
假设您有一个“用户名”字段(< input type =“text”name =“username”/>),您只需添加以下内容:
value="<?php echo isset($_POST['username']) ? $_POST['username'] : ''; ?>"
或者如果您喜欢更多:
value="<?php if(isset($_POST['username'])) echo $_POST['username']; ?>"
将“”改为“
答案 1 :(得分:1)
这听起来像基本的表单验证。我建议阅读其中一些教程或寻找一些预先构建的PHP表单验证机制。
答案 2 :(得分:1)
如果您使用自己的库,某些框架(例如CodeIgniter)将为您执行此操作。值得查看这样一个框架,因为它们提供了许多其他好处。当然,并不总是可以转移现有的应用程序,但是对于未来仍然有用。
答案 3 :(得分:1)
如果我理解正确,你想保留用户已输入的任何数据,告诉他他做错了什么,最好关注坏事。 如果是这样,那么这是一个非常基本的例子,它使用一个带有两个字段的表单,其中两个字段都需要填写才能继续。
<?php
$field1=$_POST['field1'];
$field2=$_POST['field2'];
$badField="";
if($_POST['form_action']=="submitted") {
//Check incoming data
if(empty($field1)) {
$badField="field1";
echo 'field1 is empty<br>';
}
elseif(empty($field2)) {
$badField="field2";
echo 'field2 is empty<br>';
}
else { //Everything ok - move to next page
header('Location: <next page>');
}
}
echo '<form name="mybo" action="' . $_SERVER['PHP_SELF'] . '" method="POST">
<input type="text" name="field1" value="' . $field1 . '"><br>
<input type="text" name="field2" value="' . $field2 . '"><br>
<input type="submit" name="Submit" value=" Enter ">
<input type="hidden" name="form_action" value="submitted">
</form>';
//Focus on empty field
if(!empty($badField)) {
echo '<SCRIPT language="JavaScript">
document.mybo.' . $badField . '.focus(); </SCRIPT>';
}
?>
答案 4 :(得分:0)
我认为Moav的答案是“哲学上”正确的,但如果你想这样做,你可以:
1)通过GET或POST传递文本控件ID; 2)在服务器上检查错误情况; 3)在页面返回时用该值填充隐藏的输入字段 4)如果用JS可以做错误: window.onload = init; //在这里初始化东西 函数init() { checkForError(); }
function checkForError() { var h = document.getElementById(“error_field”); var v = h.value; 如果(V) 的document.getElementById(ⅴ).focus(); }
但是,如果您将为每个错误字段执行此操作,则会有一个帖子,这是 从用户的角度来看非常无聊...所以采用其他方法更好......
答案 5 :(得分:-1)
我会采取不同的方法:
验证应该在JS中,因此您永远不会丢失数据,因为您不提交。 在服务器上提交和捕获的任何错误数据都是由于某人试图通过您的JS验证,这通常意味着他有犯罪念头。