POST BACK в PHP или JAVASCRIPT? - PullRequest
1 голос
/ 05 марта 2009

как я могу опубликовать данные, которые уже находятся в текстовом поле?

Пример: если я пропущу одно из обязательных полей, при нажатии кнопки отправки появится сообщение об ошибке.

Как я могу сделать обратную запись данных в этой форме, используя php или javascript и сделать курсор мыши прямо на поле, вызвавшем ошибку?

Ответы [ 6 ]

2 голосов
/ 05 марта 2009

В PHP нет автоматизированных способов записи информации о полях, поэтому вам просто нужно отправить ее обратно.

Допустим, у вас есть поле "username" (), вам просто нужно добавить это:

value="<?php echo isset($_POST['username']) ? $_POST['username'] : ''; ?>"

или, если вам больше нравится:

value="<?php if(isset($_POST['username'])) echo $_POST['username']; ?>"

изменено "" на "1010 *

1 голос
/ 05 марта 2009

Если я правильно понимаю, что вы хотите сохранить все данные, которые пользователь уже ввел, скажите ему, что он сделал неправильно, и, желательно, сосредоточьтесь на плохом поле. Если это так, то вот очень простой пример, использующий форму с двумя полями, для заполнения которой необходимо заполнить оба поля.

<?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>';
}
?>
1 голос
/ 05 марта 2009

Некоторые фреймворки, такие как CodeIgniter , сделают это за вас, если вы используете свои собственные библиотеки. Стоит проверить такие рамки, поскольку они предоставляют много других преимуществ. Конечно, не всегда возможно перенести существующее приложение, но все же полезно помнить о будущем.

1 голос
/ 05 марта 2009

Это звучит как базовая проверка формы. Я бы порекомендовал прочитать некоторые из этих руководств или поискать некоторые предварительно созданные механизмы проверки форм PHP.

  1. Проверка формы с использованием PHP
  2. Проверка формы PHP / CSS
  3. Проверка формы PHP
0 голосов
/ 05 марта 2009

Я думаю, что ответ Моава «философски» правильный, однако, если вы хотите сделать это, вы можете:

1) передать через GET или POST идентификатор текстового элемента управления; 2) на сервере проверьте это состояние ошибки; 3) заполните скрытое поле ввода этим значением на странице возврата 4) если ошибка, то с JS вы можете сделать: window.onload = init; // здесь инициализируем функция init () { checkForError (); }

функция checkForError () { var h = document.getElementById ("error_field"); var v = h.value; если (v) document.getElementById (v) .focus (); }

Однако, если вы сделаете это для каждого поля ошибки, будет сообщение, и это с точки зрения пользователя очень скучно ... так что лучше принять другие подходы ...

0 голосов
/ 05 марта 2009

Я бы выбрал другой подход:

Проверка должна быть в JS, и поэтому вы никогда не потеряете данные, поскольку не отправляете. Любые неверные данные, которые были отправлены и получены на сервере, происходят из-за того, что кто-то пытается передать вашу проверку JS, а это означает, что у него обычно есть криминальные мысли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...