Назначение «идентификатора базы данных» нескольким идентификаторам HTML на странице - PullRequest
1 голос
/ 17 февраля 2011

Я буду использовать model.id при обращении к идентификатору таблицы в базе данных и к идентификатору, указанному для элементов в моем html.

У меня есть проект django, где я использую некоторые скрытые поля формы (все формы имеют один и тот же идентификатор прямо сейчас для этого скрытого поля) для размещения model.id. Это прекрасно работает до тех пор, пока model.id известен, когда страница отображается.

Я сейчас пытаюсь изменить процесс, чтобы он работал, когда не указан файл model.id (т. Е. Кто-то решил создать новый экземпляр моей модели). Что касается бэкенда, у меня это работает. Model.id не предоставлен, и представление знает, что оно должно давать пустые формы. На этом этапе я предпочитаю не создавать новый экземпляр модели, как я хочу, только если пользователь действительно вводит что-то в одну из форм.

Если пользователь вводит что-то в форму, то обработка формы создает новый экземпляр модели и передает идентификатор обратно в браузер пользователя. То, что я пытался сделать, это использовать плагин формы jquery, чтобы сохранить возвращаемые данные где-то скрытым, что я бы затем посмотрел и использовал val, чтобы установить все идентификаторы скрытых полей в model.id, который был возвращен, так что следующее поле / form, которую отправляет пользователь, будет знать, что нужно писать в только что созданную модель.

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

Я пытался сделать что-то вроде следующего. Однако только один из идентификаторов на странице фактически получил назначенное значение. Есть ли другой способ достижения этой цели? Что-то, что я должен добавить, чтобы все вхождения id были установлены с чем-то вроде .val (model.id)? Если нет, есть ли у кого-нибудь предложения о том, как это сделать? Может быть, Django предоставляет более чистый способ делать именно то, что я пытаюсь сделать?

Ответ, полученный после отправки формы.

<response>
    <the_model_id_brought_back>3732</the_model_id_brought_back>
    ...
<response>

Код jQuery, пытающийся установить все идентификаторы «id_in_multiple_places» для возвращенного model.id.

jQuery('#descriptionForm').ajaxForm({
            target: '#response',
            success: function(data) {
                the_model_id = jQuery('#response').find("the_model_id_brought_back").html();
                jQuery('#id_in_multiple_places').val(the_model_id);
            }
        });

Чтобы объяснить, почему у меня есть несколько таких форм. Формы состоят из 1 видимого поля. Несколько форм на странице. Когда пользователь покидает поле (что означает, что он также покидает форму), я отправляю эту форму на сервер. Это позволит всегда сохранять их данные, даже если они остановятся на полпути и выбросят свой компьютер из окна. Они могут перейти на другой компьютер и забрать с того места, где остановились.

Спасибо.

1 Ответ

2 голосов
/ 17 февраля 2011

Теперь, глядя на это, я догадываюсь, что идея иметь несколько элементов с одинаковым идентификатором плоха

Это не только плохо, это невозможно.Ты не сможешь это сделать.Вы можете обойти это, используя классы, которые не должны быть уникальными, но, вероятно, не должны.

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

...