Скорей всего JQuery

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
480

Уважаемые коллеги, подскажите пожалуйста простое решение для следующей задачи:

Есть 4 одинаковых селекта такого плана. То есть выбор во всех селектах одинаков.


<select name="field1">
<option value="1">Препарат</option>
<option value="2">Производитель</option>
<option value="3">В наличии</option>
<option value="4">Цена</option>
</select>

Соответственно есть еще селекты field2, field3, field4. Я их использую для сопоставления юзеров полей импорта.

Юзер загружает файл CSV на сервер, а там 4 колонки(колонка1, колонка2, колонка3, колонка4). Но дело в том, что у него могут быть местами перепутаны колонки. И я хочу дать ему возможность руками сопоставить все это дело.

Ну и ближе к теме наконец-то))

Вообщем надо сделать так, чтобы при выборе в одном из селектов значения "препарат", в остальных это значение становилось disabled, либо вообще исчезало. То есть взаимоисключение чтобы было.

Надеюсь объяснил свою "хотелку" более-менее понятно.

Всем спасибо за помощь:)

Подпись))
DiAksID
На сайте с 02.08.2008
Offline
218
#1

ну как бе так: событие селекторов onChange сажаем на функцию и все дела. можно и без jquery обойтись, особо если "чисто конкретный" случай реализовывать, а не плагин "на все случаи жизни".

но лучше прицепить фреймворк раз пошли такие задачи, лишним не будет...

show must go on !!!...
dkameleon
На сайте с 09.12.2005
Offline
386
#2
Милованов Ю.С:
Вообщем надо сделать так, чтобы при выборе в одном из селектов значения "препарат", в остальных это значение становилось disabled, либо вообще исчезало. То есть взаимоисключение чтобы было.

ещё необходимо будет сделать дефолтное поле для сброса выбора.

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

но вообще это задача скорее по сортировке.

лучше заюзать так:

http://jqueryui.com/sortable/#display-grid

Дизайн интерьера (http://balabukha.com/)
DiAksID
На сайте с 02.08.2008
Offline
218
#3
dkameleon:
ещё необходимо будет сделать дефолтное поле для сброса выбора.
потому как при 4 полях если все 4 выбрать, то уже ниодно изменить не получится, так как остальные выбраны в других селектах и альтернативного выбора нет.

не обязательно, в варианте ТС достаточно сделать "обмен" значениями между селекторами при изменении, без всяких "disable"...

C
На сайте с 04.02.2005
Offline
277
#4

не имеет значение framework или native

на jquery - проще

на onchange select вешаем функцию

Получили выбранное значение

$(this).siblings('select') //получаем соседей

.each(function(){

/// пробегаем по каждому селекту и удаляем option

})

dkameleon
На сайте с 09.12.2005
Offline
386
#5
DiAksID:
не обязательно, в варианте ТС достаточно сделать "обмен" значениями между селекторами при изменении, без всяких "disable"...

главное не запутаться потом. юзабилити все же рулит :)

C
На сайте с 04.02.2005
Offline
277
#6

$(document).ready(function(){
$('select').change(function(){
var text=$(this).find('option:selected').text();
$(this)
.parents('th')
.siblings()
.each(function(){
$(this)
.find('select')
.find('option')
.each(function(){
var text_op= $(this).text();
if (text == text_op) $(this).remove();
});
});
});



});

Приблизительно так...

Нужна кнопка восстановления...

Нужно решение для переинициализации, в случае изменения.

option selecteded делать не php коде, а в js (лесенкой)

DiAksID
На сайте с 02.08.2008
Offline
218
#7
dkameleon:
главное не запутаться потом. юзабилити все же рулит :)

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

dkameleon
На сайте с 09.12.2005
Offline
386
#8
DiAksID:
если количество колонок всегда строго равно количеству возможных выборов в фильтрах (вроде у ТС именно так, нужна просто возможность менять колонки местами), то "юзабили" будет как раз в простой корреляции двух нужных селектов из всей кучи. тогда не понадобится ни кнопки сброса/восстановления, ни ремувы/дисэйблы в скрипте.

спорим с драг-дропом я буду всегда быстрее сортировать нежели вы с выпадающими списками? :)

C
На сайте с 04.02.2005
Offline
277
#9

Та не надо ничего сортировать

Добавляем еще одну кнопочку Сброса в состояние по умолчанию

function sbros(){

var opt_text = ['Препарат','Производитель','В наличии','Цена'];
var opt_val = ['drug','manufacturer','stock','price'];
$('#selects'). // чтобы идентифицировать строку с селектами
find('select')
.each(function(index){
$(this).empty();
for(var i=0; i<opt_text.length; i++) {
var selected = ''
if (index == i) selected = ' selected="selected" ';
$(this).append('<option value="'+ opt_val+'"'+selected+'>'+opt_text+'</option>');
}
})
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий