Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2010, 23:06
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Условия в скрипте в зависимости от input type="radio"
Функция, которая при клике меняет цвет рамок у ячеек таблицы:
$("td").click(function () {
		if ($(this).css("border") != "1px solid red")
		{
			$(this).css("border","1px solid red");
		}
		else
		{
			$(this).css("border","1px solid #D8D8C0");
		}
});

Мне нужно добавить 4 переключателя, и в зависимости от отмеченного, менять только одну рамку. Переключатели - верх, право, низ, лево - меняют соответствующую рамку в ячейке. Но почему-то при добавлении такого условия не происходит обработки ситуации. Делал, например, так:
<form action="#" method="post">
		<input type="radio" name="bordertype" id="type_top" value="top" checked="checked" /> Верх
		<input type="radio" name="bordertype" id="type_right" value="right" /> Право
		<input type="radio" name="bordertype" id="type_bottom" value="bottom" /> Низ
		<input type="radio" name="bordertype" id="type_left" value="left" /> Лево
	</form>

if ($(#type_top).attr("checked") == "checked")
	{
	}

Что не так?
Ответить с цитированием
  #2 (permalink)  
Старый 10.02.2010, 08:24
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Может это http://javascript.ru/switch
Хотя if тоже как switch
Чё та не пойму, читаю не врубаюсь

Может так проверять
if ($('input:checked:enabled').val()=='top') { /*химичим с верхней*/ }
надеюсь без ошибок написал
__________________
Нет предела совершенству...

Последний раз редактировалось sysya, 10.02.2010 в 08:37. Причина: добавить
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2010, 20:40
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Ааа, вон там какой синтаксис) Спасибо, помогло

UPD. Только после этого перестал работать else:
if ($('input:checked:enabled').val()=='top')
	{
		if ($(this).css("border-top") != "1px solid red")
		{
			$(this).css("border-top","1px solid red");
		}
		else
		{
			$(this).css("border-top","1px solid #D8D8C0");
		}
	}

То есть у дефолтной ячейки рамка меняет цвет на красный, но обратно уже не меняет, хотя без условия с чекбоксами все работает адекватно. В чем может быть проблема?

Последний раз редактировалось FladeX, 10.02.2010 в 20:48.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2010, 21:17
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Потому что CLICK-событие работает када кликнешь, цвет меняется, вместо условия
if ($(this).css("border-top") != "1px solid red")
	        {
	            $(this).css("border-top","1px solid red");
	        }
	        else
	        {
	            $(this).css("border-top","1px solid #D8D8C0");
	        }
нужно выбрать все TD кроме THIS, и переключить им цвет отдельно

HTML код не видел полностью, не могу понять как действовать. Там таблица или что?
__________________
Нет предела совершенству...

Последний раз редактировалось sysya, 10.02.2010 в 21:28. Причина: добавить
Ответить с цитированием
  #5 (permalink)  
Старый 11.02.2010, 02:17
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Да, там таблица - http://forumcatalog.ru/d/#pl (вариант #2)

Все td выбирать не хотелось бы, так как таблица будет минимум 12*12.
Ответить с цитированием
  #6 (permalink)  
Старый 11.02.2010, 16:18
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Кажется я понял проблему. Онклик тут правильно использован, загвоздка не в нем, а в this:
$("td").click(function () {
	if ($('input:checked:enabled').val()=='top')
	{
		if ($(this).css("border-top") != "1px solid red")
		{

При такой конструкции this уже не td, а input, насколько я понимаю. Тогда вопрос, как передать в самое вложенное условие нужный элемент (то есть td)?
Ответить с цитированием
  #7 (permalink)  
Старый 11.02.2010, 16:29
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

$(this).parents("td").eq(0)
Ответить с цитированием
  #8 (permalink)  
Старый 11.02.2010, 21:08
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Почитал в api про parents и eq и еще больше запутался - причем тут они?

Есть функция обработки клика на ячейку таблицы. Соответственно, this - это тот самый td, на который кликнули. Но потом-то мы в условии используем input, поэтому в this у нас уже не td будет - правильно я понимаю?

Поясню краткую структуру:
<table>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
</table>
<form>
<input />
<input />
</form>

К чему тут parents использовать, если инпут и td вообще в разных местах?
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2010, 22:07
Аватар для sysya
Профессор
Отправить личное сообщение для sysya Посмотреть профиль Найти все сообщения от sysya
 
Регистрация: 27.12.2009
Сообщений: 292

Попробуй поиграться с toggle()

А в новом jquery можно вот так цвет менять
$('el').css('border-color', function(i, currentCssColor){
    return i % 2 ? 'red' : 'blue';
});

i - индекс элемента в наборе всех выбранных элементов;
currentCssColor - текущий цвет бордера этого элемента;

i % 2 - условие при котором меняется цвет;

Подробнее примеры http://api.jquery.com/css/ правда на английском
__________________
Нет предела совершенству...

Последний раз редактировалось sysya, 11.02.2010 в 22:33. Причина: дополнить
Ответить с цитированием
  #10 (permalink)  
Старый 17.02.2010, 13:52
Интересующийся
Отправить личное сообщение для FladeX Посмотреть профиль Найти все сообщения от FladeX
 
Регистрация: 06.02.2010
Сообщений: 20

Да цвет поменять не проблема. Проблема именно в том, как определить рамку, у которой менять цвет (варианта 4 - верх, право, низ, лево). С переключателями бьюсь, но пока безрезультатно.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55