Показать DIV с данными формы при отправке - PullRequest
0 голосов
/ 25 июня 2009

Наверное, что-то глупое я делаю. Я хочу заполнить скрытый DIV значениями формы при отправке.

DIV открывается с правильными данными, но затем сбрасывается после завершения загрузки страницы. Что я делаю неправильно?

Вот мой тест:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content=
    "text/html; charset=us-ascii" />

    <title>Test</title>
    <script type="text/javascript">
        function test(){

            var usr = document.getElementById('user').value;
            var pwd = document.getElementById('passwd').value;

            document.getElementById('out').innerHTML = usr + " " + pwd;
            document.getElementById('out').style.display = "block";

            return true;
        }
    </script>
</head>

<body>
    <form action="" onsubmit="return test()">
        <input type="text" id="user" name="user" />
        <input id="passwd" type="text" name="passwd" /> 

        <p><input type="submit" value="Go" /></p>
    </form>

    <div id="out" style="display:none;">
    </div>
</body>

Ответы [ 8 ]

8 голосов
/ 25 июня 2009

Краткий ответ:

Изменить это

return true;

к этому

return false;

Длинный ответ:

Формы предназначены для загрузки новой страницы при их отправке. Однако с помощью сценариев мы можем предотвратить это поведение, остановив событие submit. Это может быть достигнуто разными способами, но для вашего примера простое возвращение «false» из вашего обработчика отменит событие, но только , если атрибут onsubmit также имеет оператор return который у вас уже был).

1 голос
/ 25 июня 2009

В качестве альтернативы вы можете использовать ссылку, которая выполняет работу без отправки формы.

<a href="#" onClick="test()"> Do </a>
1 голос
/ 25 июня 2009

Когда вы отправите форму, данные будут потеряны. Вы можете запретить отправку формы, установив return true для возврата false, или вы можете добавить некоторую логику для распечатки полей user и passwd в DIV id = "out" и установить блокировку отображения, если поля user и passwd имеют значение.

1 голос
/ 25 июня 2009

Эта строка, вероятно, ваша проблема:

<form action="" onsubmit="return test()">

Пустой атрибут action заставляет страницу подпрыгивать (перезагружаться) при отправке формы. Вы можете предотвратить это, убедившись, что test () возвращает значение false, а не true, что не позволит форме отправлять вообще.

1 голос
/ 25 июня 2009

Вам необходимо вернуть false

Видите ли, возвращаемое значение onsubmit используется, чтобы решить, продолжать ли отправлять форму. Так что если это правда, страница перезагрузится и значения будут потеряны. Если это ложно, это не будет!

1 голос
/ 25 июня 2009

Попробуйте заменить «вернуть истину»; в конце вашей функции с «return false;». Я рассуждаю так: поскольку у вас задан атрибут action, но значение, он может подумать, что текущая страница является значением, и поскольку вы не отменяете событие, которое страница перезагружает.

1 голос
/ 25 июня 2009

Функция onsubmit отправляет форму обратно на страницу. Вам необходимо отменить событие, чтобы предотвратить отправку данных и перезагрузку страницы. Самый простой способ сделать это - заставить функцию test () возвращать false. Если вы все еще хотите, чтобы форма отправляла и отображала данные в div, вам нужно отправить форму через AJAX или в iFrame.

0 голосов
/ 21 января 2011

Ваша проблема на линии Вы должны заполнить действие названием страницы или кодом php для направления на саму страницу: Я проверил.

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