Здравствуйте, у меня возникла проблема. У меня есть модальное окно, в нём есть форма отправки. Посетитель заполняет её и в случае, если данные заведены правильно, в модальном окне div элемент, в котором находится форма отправки, должна становиться невидимой и другой div элемент в этом же модальном окне должен появиться. Проверку данных я осуществил с помощью php и ajax. Но вот если данные были правильны, то как мне сделать так, что-бы один div исчез и следующий появился? Вот пример моего кода: Код (Text): //проверка данных //добавление данных в базу данных if ($dataCorrect) { //Направлено в модальное окно echo "Your data is correct, it was succesfully added to the Databank!"; echo "<script type = 'text/javasript'> document.getElementById("div1").style.display = "none"; document.getElementById("div2").style.display = "block"; </script>; } Этот код не работает, но если я добавляю в моё модальное окно дополнительную кнопку и значению onclick присваиваю тот же скрипт, то при нажатии её всё работает. Как мне сделать так, что-бы контейнеры исчезали и появлялись после проверки в php?
Если ты говоришь про код который ты привел, то я согласен он с ошибкой. Открой свой код в нормальном редакторе и посмотри внимательно на кавычки.
Да не, там дело не в кавычках, я этот пример так написал... Нормальный код проверен в редакторе, там ошибок с кавычками нету. Вот более подробный пример, я и частично нашел ошибку, но не знаю пока как её решить. Изначально я думал, что причина в php, но потом понял, что причина лежит глубже. Код (Text): <html> .... <head> <script type = "text/javascript" function AddData(resuld_id, form_id, url) { jQuery.ajax({ url: url; type: "POST"; dataType: "html"; data: jQuery("#"+form_id).serialize(), sucess: function(response) { document.getElementById(result_id).innerHTML = response; }, error: function(response) { document.getElementById(result_id).innerHTML = "Error...."; } }); } </head> <body> <div id="modalWindow"> <div id="ErrorPrinting"> <--?Здесь выводятся ошибки--> </div> <div id="Datainput"> <form action = "" id = "datas" method = "post"> <input>.... <input>.... <input type = "button" onClick="AddData('Errorprinting', 'DataInput', 'analyseData.php')" </form> </div> </div> </body> </html> //analyseData.php <?php ..... if ($dataCorrect) { echo "<script type = 'text/javascript' //Поскольку целевой контейнер функции AddData() контейнер ErrorPrinting, //контейнер Datainput не виден этому скрипту document.getElementById('Datainput').style.display = none; </script>" } else { //Ошибка выдаётся в поле "ErrorPrinting", но если я в это поле вставляю контейнер с формой //и php скрипт её видит, то при выдаче ошибки он удаляет форму(Я так понял переписывая её) и выдаёт, //то что стоит в echo echo "Error...." } ?>
Постановка вопроса неправильная. Из php нельзя сделать div невидимым. Хотя вы и выводите javascript, который делает div невидимым. В Javascript ошибка: Код (Text): echo "<script type = 'text/javascript'> //Поскольку целевой контейнер функции AddData() контейнер ErrorPrinting, //контейнер Datainput не виден этому скрипту document.getElementById('Datainput).style.display = none; </script>"
Да, постановка вопроса и вправду неправильна. А в чём ошибка в javascript? Я просто целый день сижу над этой проблемой и тупо не могу придумать оптимальное решение
Ну ту, что я заметил, там закрывающая ">" была пропущена. Дальше - посмотрите в консоли браузера. Я обычно javascript-ы в Chrome отлаживаю. Можно в FireBug
mkramer, Да, что вы заладили, нельзя, нельзя. Вот кокраз $dataCorrect и поможет вам скрыть див через php. Как полностью так и вовсе стилями.
Всё, проблема решена. Я послал из php информацию типа JSON в виде пары (div, string). Ну а там уже потом подправил функцию addData(). Всем спасибо за ответы.