Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2010, 13:26
Новичок на форуме
Отправить личное сообщение для SerjRamone Посмотреть профиль Найти все сообщения от SerjRamone
 
Регистрация: 07.07.2010
Сообщений: 5

стили input при событии onFocus
Здравствуйте. В JavaScript только начинаю разбираться, и вот возникла проблема.
Код функции:
function func_onFocus(obj){
  
	//alert('123');
	//alert(obj);
	
	if (obj == "credit_size_radio"){
	
		document.forms["CForm"].elements["sale_price"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["down_percent"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["credit_size"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["overpayment"].style.backgroundColor = "#DEDEE0";		
		//onkeydown="return false;"	
	}


часть формы:
<input name="calculation_kind" type="radio" value="monthly_payment_radio" onFocus="func_onFocus(this.value);" checked="checked"><label for="calculation_kind">Ежемесячные выплаты</label><br>


в чем ошибка? при выборе элемента ничего не происходит.
Заранее всем спасибо))
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2010, 13:54
Аспирант
Отправить личное сообщение для pandasensey Посмотреть профиль Найти все сообщения от pandasensey
 
Регистрация: 24.02.2010
Сообщений: 55

приведенный пример формы действительно не будет работать, хотя бы потому, что у кнопки calculation_kind значение monthly_payment_radio, а вы передаете именно это значение и при проверке
if (obj == "credit_size_radio")
(где, кстати, лучше использовать "===" для сравнения со строкой) естественно ничего не происходит. Можно более подробный код?
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2010, 14:31
Новичок на форуме
Отправить личное сообщение для SerjRamone Посмотреть профиль Найти все сообщения от SerjRamone
 
Регистрация: 07.07.2010
Сообщений: 5

Цитата:
потому, что у кнопки calculation_kind значение monthly_payment_radio, а вы передаете именно это значение и при проверке
Ну это я не ту строчку скопировал. Извините.

Код подробнее:
function func_onFocus(obj){
	
	if (obj == "credit_size_radio"){
	
		document.forms["CForm"].elements["sale_price"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["down_percent"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["credit_size"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["overpayment"].style.backgroundColor = "#DEDEE0";		
	}
	
	if (obj == "year_term_radio"){
	
		document.forms["CForm"].elements["credit_size"].style.backgroundColor = "#DEDEE0";
		document.forms["CForm"].elements["overpayment"].style.backgroundColor = "#DEDEE0";
		document.forms['CForm'].elements['year_term'].style.backgroundColor = '#DEDEE0'; 
		
	}
	
	if (obj == "monthly_payment_radio"){
	
	document.forms['CForm'].elements['monthly_payment'].style.backgroundColor = '#DEDEE0'; 
	document.forms['CForm'].elements['credit_size'].style.backgroundColor = '#DEDEE0'; 
	document.forms['CForm'].elements['overpayment'].style.backgroundColor = '#DEDEE0';
	
	}
  }  
 
 
 
 }



<td width="100%" align="left" colspan="2">
	 <input name="calculation_kind" type="radio" value="monthly_payment_radio" onFocus="func_onFocus(this.value);" checked="checked"><label for="calculation_kind">Ежемесячные выплаты</label><br>
	 <input name="calculation_kind" type="radio" value="credit_size_radio" onFocus="func_onFocus(this.value);"><label for="calculation_kind">Сумма кредита</label><br>
	 <input name="calculation_kind" type="radio" value="year_term_radio" onFocus="func_onFocus(this.value);"><label for="calculation_kind">Период кредитования</label>
	</td>
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2010, 15:21
Аспирант
Отправить личное сообщение для pandasensey Посмотреть профиль Найти все сообщения от pandasensey
 
Регистрация: 24.02.2010
Сообщений: 55

1.
В вашем случае для проверки значения лучше использовать оператор switch:
switch (obj) {
  case 'credit_size_radio':
    //Тут действия
  break;
  case 'year_term_radio':
    //Тут действия
  break;
  case 'monthly_payment_radio':
    //Тут действия
  break;
}

2. Если не выполняется само событие (это можно проверить, добавив alert в первую строчку функции), то попробуйте изменить onFocus на onClick
3. Если событие выполняется, но ничего не изменяется, попробуйте обращаться к элементам по их id (предварительно задайте id каждому элементу формы идентичный имени) чтобы было примерно так:
<input name="overpayment" id="overpayment"/>

В этом случае обращаться вы к нему будете через
document.getElementById('overpayment')
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2010, 15:36
Новичок на форуме
Отправить личное сообщение для SerjRamone Посмотреть профиль Найти все сообщения от SerjRamone
 
Регистрация: 07.07.2010
Сообщений: 5

Цитата:
2. Если не выполняется само событие (это можно проверить, добавив alert в первую строчку функции), то попробуйте изменить onFocus на onClick
function func_onFocus(obj){
	   
	    alert('123');
.......


onClick тоже не работает, да и оно не подошло бы потому что выбрать можно и не кликнув мышью а переместившись с помощью клавиатуры.
алерт добавил, тоже не работает.

а вот так работает:
<input name="calculation_kind" type="radio" value="monthly_payment_radio" onFocus="alert('123')" checked="checked"><label for="calculation_kind">Ежемесячные выплаты</label><br>
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2010, 15:54
Новичок на форуме
Отправить личное сообщение для SerjRamone Посмотреть профиль Найти все сообщения от SerjRamone
 
Регистрация: 07.07.2010
Сообщений: 5

всё, разобрался.. ошибка была глупая.. pandasensey, спасибо большое ))
Ответить с цитированием
  #7 (permalink)  
Старый 08.07.2010, 01:34
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

<style type="text/css">
input {background: white}
input:focus {background: yellow}
</style>
<input /><input /><input />
Для нормальных браузеров
Ответить с цитированием
  #8 (permalink)  
Старый 08.07.2010, 12:32
Аспирант
Отправить личное сообщение для pandasensey Посмотреть профиль Найти все сообщения от pandasensey
 
Регистрация: 24.02.2010
Сообщений: 55

subzey, во-первых, насколько я понял, там задача была при нажатии на radio, отмечать группы инпутов. А во-вторых, трудно доказать Microsoft'у, что они выпускают из года в год ненормальные броузеры, а по гугл аналитиксу, это один из самыз популярных броузеров инета
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2010, 12:47
Новичок на форуме
Отправить личное сообщение для SerjRamone Посмотреть профиль Найти все сообщения от SerjRamone
 
Регистрация: 07.07.2010
Сообщений: 5

Цитата:
subzey, во-первых, насколько я понял, там задача была при нажатии на radio, отмечать группы инпутов. А во-вторых, трудно доказать Microsoft'у, что они выпускают из года в год ненормальные броузеры, а по гугл аналитиксу, это один из самыз популярных броузеров инета
Совершенно верно
Ответить с цитированием
  #10 (permalink)  
Старый 08.07.2010, 13:13
Аватар для Hagrael
Аспирант
Отправить личное сообщение для Hagrael Посмотреть профиль Найти все сообщения от Hagrael
 
Регистрация: 17.02.2010
Сообщений: 88

А разве нельзя в стилях указать :focus ?)))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг Firefox: по F5 перескакивает radio при динамическом добавлении в DOM input Atoll Events/DOM/Window 6 22.06.2010 18:25
Передать текст в input при клике на него rolph Общие вопросы Javascript 2 13.04.2010 18:02
Добавление класса на елемент по id при фокусе на input Andrew_tl Events/DOM/Window 1 18.02.2010 19:09
Как при наведении на один объект изменять стили других? greysells jQuery 4 06.12.2009 11:00
Смена картинки (бекграунд дива ) при событии (нажатие клавиш или клавиши и мыши) Monster Events/DOM/Window 5 01.11.2009 01:16