2014-01-04 2 views
-1

Я взял на себя проект, и я пытаюсь исправить существующий код. Я не могу показать код из-за конфиденциальности, но я постараюсь задать свой вопрос так подробно, как могу, и, если абсолютно необходимо, я попытаюсь показать код, с которым, как я думаю, я работаю.Multipage для использования javascript

Теперь эта форма использует кучу js-файлов. Сама форма использует javascript и ajax вызывающие php-файлы, когда это необходимо. Это дает иллюзию многократного заполнения, но на самом деле это только одно. Поэтому первая «страница» имеет поля для заполнения, и когда пользователь нажимает кнопку «Далее», она заменяет эту «страницу» следующей «страницей» и так далее. На одной странице есть список флажков, при выборе одного из этих флажков задается переменная для этого значения. Затем в форме он вызывается и отображается.

Таким образом, через формы «страницы» есть кнопки «Назад» и «Назад», которые используют javascript, чтобы просто заменить текущую «страницу» на следующую «страницу», но так как это технически все на одной странице все поля формы остаются заполненными до последней «страницы», где она вводится в базу данных.

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

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

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

Спасибо.

[ОБНОВЛЕНИЕ]

//The below code is in the form data javascript file. 
    //validate// 
    var field = findField(page, 'data'); 
     //Above is setting the data for the field Below is getting the checkbox value from the previous 'page'. 
    var checks = findField(form.check[0], 'check').value.split(/\s*\,\s*/); 
    for (var i in checks) { 
    var checkbox_id = checks[i]; 
    var check = checkdata('check')[checkbox_id]; 
    //Removed project detail 
    info += '<p>For ' + check.name + ' displayed:</p>'; 

Хорошо, прежде немного о том, где он отображается. Я сузил проблему до того, что отображается, не очищается на задней кнопке. Таким образом, файл check.name отображается до тех пор, пока поле, которое заставляет его отображать, не будет изменено, тогда файл check.name изменится на правильное значение. Поэтому, когда «страница» работает на велосипеде, есть javascript, который я могу использовать, чтобы просто очистить это поле, когда пользователь нажимает кнопку «Назад». Может быть, так просто? Надеюсь, приведенный выше код немного поможет.

+1

Если правила компании не позволяют вам публиковать фактический код, как создать меньшую пробную версию концепции, которая демонстрирует проблему, с которой вы сталкиваетесь? Мы можем помочь с этим, а затем вы можете применить наш совет обратно к своему реальному коду. (Я понимаю, что это может приложить определенные усилия с вашей стороны, но в противном случае вы в основном просите нас реализовать все это с нуля для вас, чтобы мы могли эффективно указывать, как делать то, что вы просите. И мы можем догадываться, что неправильно на то, что вы имеете в виду, в этом случае все время было потрачено впустую ...) – nnnnnn

+1

Я боюсь, что описание проблемы недостаточно; нам нужно что-то конкретное, чтобы посмотреть, чтобы дать вам полезный ответ. –

+0

Я обновил свой вопрос с помощью некоторого примера кода. – DataCorrupt

ответ

0

Я исправил это.

Что я сделал, так это то, что было сделано, и взял код, который хранит его в переменной. Так как это все один файл, когда пользователь нажимает «Go Back», переменная все еще установлена. Поэтому, когда пользователь возвращается к изменению более раннего поля, я помещаю код, который проверяет, пуста ли переменная. Если он ничего не делает, если это не так, то он будет устанавливать переменную в ничто, поэтому она снова будет установлена ​​позже в коде с обновленными данными.

Easy Peasy. Я не понимаю путаницы.

Спасибо в любом случае.

0

Без кода, мы можем только догадываться, но вот некоторые из возможных догадок:

Если DOM элементы из предыдущих элементов формы были сохранены (не уничтожаются, а затем воссоздан, когда кто-то идет к следующей форме и затем возвращается), то элементы DOM сохраняют свои предыдущие значения, если только некоторые из ваших кодов не меняют эти значения. Итак, если элементы DOM сохраняются и значения флажков меняются, то это должно быть потому, что некоторые из вашего кода меняют их. Скорее всего, было бы предположение, что есть некоторый код, который пытается инициализировать флажки до начального значения до того, как было выполнено какое-либо редактирование. Если это так, то вам нужно убедиться, что этот код НЕ запускается, когда отображается страница, которая уже была показана пользователю и отредактирована.

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

+0

Я обновил свой вопрос. Это просто проблема с заполнением пользователем поля и отображением флажков, он уже отображается и остается, когда пользователь возвращается к предыдущей странице и меняет флажок. Это похоже на эту форму - одна страница, и пользователь прокручивается вниз, и отображаются флажки. Затем они прокручиваются вверх и меняют флажок, когда они прокручивают назад, все равно будут отображаться предыдущие данные, пока они не будут изменены. Я ненавижу общаться с кодом других людей. Особенно, когда он не комментируется. – DataCorrupt

+0

@ user2993209 - флажки не спонтанно меняют свои значения. Флажок или уничтожается, а затем воссоздается и не заполняется прежним значением, или есть код, который возвращает значение - точно так же, как я сказал в своем ответе. Вам нужно выяснить, что это такое. Поскольку вы не используете фактический код, мы не можем показать вам, что это такое. – jfriend00

+0

Проблема не в этом флажке. Именно с полем отображаются данные флажка. Форма представляет собой одну страницу javascript, которая, когда пользователь нажимает на следующий бокс, javascript заменяет страницу отображения следующей страницей, но она остается тем же самым файлом. Поэтому дисплей всегда присутствует, потому что он уже установлен и отображается. Если я изменил этот флажок, перейдите в раздел отображения, в котором будут отображаться предыдущие данные, поскольку он уже показывался в разделе, который был просто скрыт за другим разделом. Если я изменил данные, отображающие его в форме, отобразятся правильные данные. – DataCorrupt

0

Сохраните все данные в некоторый массив/объект. Когда вы вернетесь на какую-либо страницу, заполните выбранные флажки, а затем сбросьте статус всех этих флажков по умолчанию и когда пользователь представит эту часть формы, он снова назначит их.