Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Работа над сайтом > HTML/DHTML/CSS/JS/VB

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.01.2006, 05:08
x2com вне форума Посмотреть профиль Отправить личное сообщение для x2com Найти все сообщения от x2com
  № 1  
Ответить с цитированием
x2com
 
Аватар для x2com

Регистрация: Dec 2003
Адрес: Нижний Новгород
Сообщений: 121
Tip Checkbox и TextField - активность\не активность...

У меня из БД в html строются определённые строки с информацией и в каждий строке есть один чекбокс(для отбора строк-записей) и одно текстовое поле (для указания количества выбраных записей). Задача сделать так, чтоб можно было выбрать, например, только 3 чекбокса. Вабирает человек максимум 3 позиции и чекбоксы и текстфилды не относящиеся к выбраным строкам становятся не активными (disabled).
Парился я, парился с этим, что-то мало чего выходит. Может быть у кого-то есть идеи как конкретно реализовать задуманное.
Заранее благодарен!
__________________
X/2/CoM

Старый 26.01.2006, 11:56
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 2  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Вешаешь на onclick ко всем чекбоксам обработчик, который проверяет количество зачеканых полей и отключает остальные.
Код:
 function GetCount() { 
    var retvalue = 0;
    tempColl = document.getElementsByTagName("input");
    for (i=0; i<tempColl.length; i++) {
       if ((tempColl[i].type == "checkbox")&&(tempColl[i].checked))  retvalue = retvalue + 1;
    }
    if (retvalue >= 3) DisableInactive();
 }

 function DisableInactive() {
    tempColl = document.getElementsByTagName("input");
    for (i=0; i<tempColl.length; i++) {
      if ((tempColl[i].type == "checkbox")&&(!tempColl[i].checked))  tempColl[i].disabled = true;
    }
  
 }
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 26.01.2006, 17:11
x2com вне форума Посмотреть профиль Отправить личное сообщение для x2com Найти все сообщения от x2com
  № 3  
Ответить с цитированием
x2com
 
Аватар для x2com

Регистрация: Dec 2003
Адрес: Нижний Новгород
Сообщений: 121
Спасибо, вроде работает, только немного не так как хотелось. А как сделать, чтобы этой функции подчинялись чекбоксы определённого имени. Например где name='choose[x]' ? У меня просто две разных группы записей с чекбоксами и надо, чтоб эта функция работала отдельно для каждой группы.
__________________
X/2/CoM

Старый 26.01.2006, 17:47
Skubent вне форума Посмотреть профиль Отправить личное сообщение для Skubent Посетить домашнюю страницу Skubent Найти все сообщения от Skubent
  № 4  
Ответить с цитированием
Skubent
 
Аватар для Skubent

Регистрация: Oct 2005
Адрес: Млечный Путь, 7-й рукав, YD AC-451, 3-я планета.
Сообщений: 996
Отправить сообщение для Skubent с помощью ICQ
Подумать и использовать в проверке не type, а name.
__________________
Тут вы найдете ответы на почти все вопросы:
А можно ли сделать так ? - Можно.
Почему не работает ? - Неправильно сделано.
Где ошибка ? - В ДНК.

Старый 26.01.2006, 18:52
x2com вне форума Посмотреть профиль Отправить личное сообщение для x2com Найти все сообщения от x2com
  № 5  
Ответить с цитированием
x2com
 
Аватар для x2com

Регистрация: Dec 2003
Адрес: Нижний Новгород
Сообщений: 121
Я, конечно, извиняюсь. Я плохо в JS разбираюсь, из предложенного кода получилось:
Код:
function GetCount(num) { 
    var retvalue = 0;
    tempColl = document.getElementsByTagName('input');
    for (i=0; i<tempColl.length; i++) {
       if ((tempColl[i].name == "rdv_choose")&&(tempColl[i].checked))  retvalue = retvalue + 1;  }
    if (retvalue >= num) { DisableInactive(); }else EnableInactive();
 }

function DisableInactive() {
    tempColl = document.getElementsByTagName('input');
    for (i=0; i<tempColl.length; i++) {
      if ((tempColl[i].name == "rdv_choose")&&(!tempColl[i].checked))  
	  		{ tempColl[i].disabled = true; }
    }  
 }
 function EnableInactive() {
    tempColl = document.getElementsByTagName('input');
    for (i=0; i<tempColl.length; i++) {
      if ((tempColl[i].name == "rdv_choose")&&(!tempColl[i].checked))  tempColl[i].disabled = false;
    }  
 }
При этом функция пререстаёт работать, а если "tempColl[i].name" заменить обратно на "tempColl[i].type" начинает работать. Так что замена type на name у меня не прокатило.

P.S.- "rdv_choose" - массив с поочерёдными числовыми ключами.
__________________
X/2/CoM


Последний раз редактировалось x2com; 26.01.2006 в 18:55.
Создать новую тему Ответ Часовой пояс GMT +4, время: 05:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.