2010-01-22 4 views
0

Мне не удалось найти решение для конкретной проблемы, имеющейся у меня с этим проектом. Мне нужно следующее: динамически добавлять строки в таблицу, которые содержат два блока выбора. И использовать ajax для автоматического заполнения опций выбора второго блока выбора на основе значения первого окна выбора ... в соответствующей строке таблицы (который был динамически добавлен «на лету» некоторыми js).Как заполнить динамически создаваемые поля выбора с помощью ajax

Еще со мной?

Я могу легко заполнить динамическое выделение с помощью ajax/javascript на основе значения первого раскрывающегося списка в первой строке. Я могу даже заполнить три или более прямоугольника выбора в одной строке, используя функции ajax/js для загрузки каждого дополнительного выбора. Но это не моя цель.

Вот что у меня есть ... Моя форма содержит простую таблицу с тремя столбцами. Сначала это флажок, второй - поле выбора «Состояние», а третий столбец - поле выбора «Город». У меня есть две кнопки над таблицей, которые позволяют мне «Добавить строку» и «Удалить строку». Имейте в виду, что первая строка (которая запрограммирована) отлично работает для загрузки имен городов состояния с помощью ajax.

После нажатия кнопки Добавить строку, я могу создать вторую строку динамически, которая содержит флажки, поля выбора состояния и города. Выбор состояния заполняется на основе содержимого innerHTML в исходном столбце, но выбор города явно нулевой, поскольку он ожидает, что ajax заполнит его. Примечание: имена и идентификаторы этих полей являются итеративными ... city_id, city_id_1, city_id_2, city_id_3 и т. Д., Поэтому у меня есть эта уникальность для работы.

Моя проблема заключается в том, что, когда я выбираю состояние со 2-го или 3-го (и так далее) строк, изменяется только выбор первого сорта. Зачем? Поскольку функция обработки js/ajax говорит, что работает только с элементом с именем «city_id» !! Какое название поля выбора города в первой строке.

Я еще не нашел способ динамически передать имя элемента, который мне нужно обновить, до функции aread. Когда мне нужно было заполнить два или три блока выбора в строке (той же строке), мне пришлось иметь дополнительные функции ajax для каждого раскрывающегося списка - которые являются статичными, заметьте ... но что, если я создаю элемент динамически? Я не могу предварительно запрограммировать многие функции на мою страницу ... или я должен?

Если у вас есть какие-либо идеи о том, как это сделать, я был бы очень благодарен !!!

Спасибо!

ответ

0
var i=1; // put here the number of the column being added now. 
var x=document.getElementById("city_id_"+i); 
// populate x 
+0

Вы имеете в виду как глобальное? В одной из моих js-функций у меня есть «xmlHttp.onreadystatechange = stateChanged;» и, как вы знаете, «stateChanged» не может принять никакого ввода. Поскольку он не может принимать переменные, мне нужно статически писать имя поля «txtResult» в функции обработки: document.getElementById («txtResult»). InnerHTML = xmlHttp.responseText; – 2010-01-22 18:16:26

+0

Не может быть слишком сложно определить, какая именно колонка была добавлена. например, найти таблицу (статически написанное имя), а затем найти (динамически) последний столбец. –