2013-10-07 2 views
1

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

недавно добавленные выпадающие списки.

select name="CSSAtapsClient[client_time_window_arr][0]" id="client_time_window_0">/select> 
select name="CSSAtapsClient[client_time_window_arr][1]" id="client_time_window_1">/select> 
select name="CSSAtapsClient[client_time_window_arr][2]" id="client_time_window_2">/select> 
select name="CSSAtapsClient[client_time_window_arr][3]" id="client_time_window_3">/select> 

после того, как я динамически удаляю их через javascript. (Позволяет сказать, я удаление второго) так, то новые будет отображаться как следующие,

select name="CSSAtapsClient[client_time_window_arr][0]" id="client_time_window_0">/select> 
    select name="CSSAtapsClient[client_time_window_arr][2]" id="client_time_window_2">/select> 
    select name="CSSAtapsClient[client_time_window_arr][3]" id="client_time_window_3">/select> 

Так что теперь вопрос у меня есть, имена выпадающих, как это, (0,2, 3)

CSSAtapsClient[client_time_window_arr][0], 
CSSAtapsClient[client_time_window_arr][2], 
CSSAtapsClient[client_time_window_arr][3] 

Так что это вызывает ошибку для меня, и мне нужно, чтобы изменить порядок это имя и делает его, как это, (0,1,2)

CSSAtapsClient[client_time_window_arr][0] 
CSSAtapsClient[client_time_window_arr][1] 
CSSAtapsClient[client_time_window_arr][2] 

Как я могу просто переименовать эти атрибуты имени выпадающего списка (от 0 до того, сколько когда-либо выйдет)? оценить ранний ответ

EDIT 1

Я попытался это, но не работало.

$('#tbl_dynamic_call_dates select').each(function(i){ 
$(this).attr('name',"CSSAtapsClient[client_time_window_arr][i]"); 
}); 
+1

Убедитесь, что 'id' атрибуты являются уникальными на веб-странице. «Целью этого метода является устранение ключевых ошибок, которые, как известно, вызывают проблемы для вспомогательных технологий [...]». Из этого [статьи] (http://www.w3.org/TR/WCAG-TECHS/H93.html) на W3C.org – Lan

+0

@Lan tnx и обновил исходный вопрос – dev1234

ответ

2

Вы можете просто сбросить значения с помощью .attr() метода:

$('#tbl_dynamic_call_dates select').attr('name', function(i) { 
    return 'CSSAtapsClient[client_time_window_arr]['+ i +']'; 
}); 
+2

Простые вещи лучше. – Lan

+0

@undefined вы можете проверить мой ниже ответ и сказать, какая из них лучше? – dev1234

+0

@mazraara Конечно, с помощью метода '.attr()' вам не нужно создавать много ненужных объектов jQuery, используя функцию обратного вызова '.attr()' более эффективна. Вы также можете использовать 'this.name = ...' в обратном вызове '.each()', который лучше, чем создание объектов. – undefined

1

Я сделал это,

$('#tbl_dynamic_call_dates select').each(function(i){ 
$(this).attr('name',"CSSAtapsClient[client_time_window_arr][" + i + "]"); 
}); 
Смежные вопросы