|
|
|
| Добрый вечер.
помогите, пожалуйста, доделать скрипт.
для выпадающего списка получаю данные(id и name) с сервера при помощи $.getJSON
формирую элементы выпадающего списка
var option = '';
$(result.section).each(function(){
option += '<option value=\"' + $(this).attr('name') + '\">' + $(this).attr('name') + '</ option>';
});
$("#section").html(option).attr('disabled', false);
/* теперь, в зависимости от выбранного option в скрытый input надо подставить соответствующее значение id */
$("#section").change(function(){
input = '<input id="id" type="text" name="id" value="' + ??? +'" />';
$("#section").after(input);
)}
|
и вот как это сделать не знаю.
подскажите как решить эту задачу?
заранее благодарю откликнувшихся. | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.05.2011 в 01:19)
| | Хм... так в option у вас вроде как и нет id, только name? | |
|
|
|
|
|
|
|
для: cheops
(23.05.2011 в 07:54)
| | правильно, в option я подставил только name, id у меня в $(this).attr('id') и вот этот id мне надо подставить в скрытый input, который располагается сразу за select.
вот более полный участок кода
<script type='text/javascript'>
...........................................................
if(table != "Выберите раздел."){
$("#section").attr('disabled', true);
$("#section").html("<option> идёт загрузка...</ option>");
var url = "http://localhost/newsite/confiles/action/subsection.php";
$.getJSON(
url,
{"table" : encodeURI(table), "author" : encodeURI(author)},
function(result){
if(result.type == 'error'){
$("#section").html("").attr('disabled', true);
return (false);
}
else{
var option = '';
var input = '';
option += '<option>Выбирите подраздел.</ option>';
$(result.section).each(function(){
/* $(this).attr('id'); */
option += '<option id=\"cc\" value=\"' + $(this).attr('name') + '\">' + $(this).attr('name') + '</ option>';
});
/* готовый select */
$("#section").html(option).attr('disabled', false);
/* в зависимости от выбранного input подставить соответствующее значение id в input */
$("#section").change(function(){
$(this).next("#id").remove();
/* вот в этот input надо подставить id, который находится в $(this).attr('id') */
input = '<input id="id" type="text" name="id" value="' + ???? +'" />';
$("#section").after(input);
})
}
}
);/* завершение .getJSON */
}
else{
$("#section").html("").attr('disabled', true);
}
</script>
|
p.s. извините за неточность в вопросе | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.05.2011 в 09:33)
| | Хм... что-то еще меньше понятно стало, вот я в option вижу id=\"cc\", т.е. каждому элементу выпадающего списка присваивается один и тот же id?
Что в конечном итогде должно попасть в поле input? Выбранный текст или его идентификатор из JSON? | |
|
|
|
|
|
|
|
для: cheops
(23.05.2011 в 12:18)
| | попробую объяснить более понятней.
получаю данныe при помощи $getJSON, в строке уже есть name и id, name я подставляю в выпадающий список, а id мне надо подставить в скрытый input , при этом надо совместить так, что бы в input попал тот id , который принадлежит name.
получается, что сформировался список имён, выбирается имя и id этого имени нужно подставить в input , выбирается другое имя - id в input меняется на соответствующее.
далее данные заносятся в базу данных. | |
|
|
|
|
|
|
|
для: cheops
(23.05.2011 в 12:18)
| | > Выбранный текст или его идентификатор из JSON?
именно это и должно попасть | |
|
|
|
|
|
|
|
для: cheops
(23.05.2011 в 12:18)
| | попробовал использовать data(), думал, что при выборе пункта выпадающего списка сравнивать value со значением в data, но так ни чего не получилось.
вот, что я наворотил
.................................................
option += '<option>Выбирите подраздел.</ option>';
$(result.section).each(function(){
option += '<option value=\"' + $(this).attr('name') + '\">' + $(this).attr('name') + '</ option>';
e[j] = [$("#section").data("data", {name : $(this).attr("name"), id : $(this).attr("id")})];
j++;
});
$("#section").html(option).attr('disabled', false);
$("#section").change(function(){
$(this).next("#id").remove();
$.each(e, function(key, value){
alert(key + "-" + ($("#section").data("data").id + "-" + $("#section").data("data").name));
});
/* ВОТ В ЭТОТ INPUT НАДО ПОДСТАВИТЬ ID Из JSON */
input = '<input id="id" type="text" name="id" value="' +/* $(this).data("id") */+'" />';
$("#section").after(input);
})
................................................
|
в массиве все элементы содержат одно и тоже значение.
как же всё таки решить задачу, что я делаю не так?
p.s. убрал атрибут id из option, так как он там лишний ))) только вводит в заблуждение | |
|
|
|