在PHP或JAVASCRIPT中回复?

时间:2009-03-05 15:19:13

标签: php javascript

如何回发文本字段中已有的数据?

例如: 如果我错过了一个必填字段,当我点击提交按钮时会出现错误。

如何使用php或javascript在该表单中回发数据,并将鼠标光标直接定位到导致错误的字段?

6 个答案:

答案 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表单验证机制。

  1. Form validation using PHP
  2. PHP/CSS Form validation
  3. PHP Form Validation

答案 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验证,这通常意味着他有犯罪念头。