Javascript.RU

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

Добавление класа к <a> когда не выбран input
Как добавить class к <a> в блоке pagination, когда пользователь ничего не выбрал в input в одном из блоков question-1 или 2 или 3 и т.д.?

Имеется следующее

<div class='test-data'>
    <div class='question' data-id='1' id='question-1'>
        <p class='q'>Вопрос 1</p>
        
        <p class='a'><input type='radio' id='answer-1' name='question-1' value='1'>
        <label for='answer-1'>Ответ 1</label></p>
        
        <p class='a'><input type='radio' id='answer-2' name='question-1' value='2'>
        <label for='answer-2'>Ответ 2</label></p>
        
        <p class='a'><input type='radio' id='answer-3' name='question-1' value='3'>
        <label for='answer-3'>Ответ 3</label></p>
    </div>
    
    <div class='question' data-id='2' id='question-2'>
        <p class='q'>Вопрос 2</p>
        
        <p class='a'><input type='radio' id='answer-4' name='question-2' value='4'>
        <label for='answer-4'>Ответ 1</label></p>
        
        <p class='a'><input type='radio' id='answer-5' name='question-2' value='5'>
        <label for='answer-5'>Ответ 2</label></p>
    </div>
</div>

<div class="pagination">
    <a class="nav-active" href="#question-1">1</a>
    <a href="#question-2">2</a>
    <a href="#question-5">3</a>
</div>

<button class='center btn' id='btn'>Результаты</button>
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2015, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

SLameN,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .red{
    background-color: Red;
  }

  </style>
</head>

<body>
 <div class='test-data'>
    <div class='question' data-id='1' id='question-1'>
        <p class='q'>Вопрос 1</p>

        <p class='a'><input type='radio' id='answer-1' name='question-1' value='1'>
        <label for='answer-1'>Ответ 1</label></p>

        <p class='a'><input type='radio' id='answer-2' name='question-1' value='2'>
        <label for='answer-2'>Ответ 2</label></p>

        <p class='a'><input type='radio' id='answer-3' name='question-1' value='3'>
        <label for='answer-3'>Ответ 3</label></p>
    </div>

    <div class='question' data-id='2' id='question-2'>
        <p class='q'>Вопрос 2</p>

        <p class='a'><input type='radio' id='answer-4' name='question-2' value='4'>
        <label for='answer-4'>Ответ 1</label></p>

        <p class='a'><input type='radio' id='answer-5' name='question-2' value='5' >
        <label for='answer-5'>Ответ 2</label></p>
    </div>
</div>

<div class="pagination">
    <a class="nav-active" href="#question-1">1</a>
    <a href="#question-2">2</a>
    <a href="#question-5">3</a>
</div>

<button class='center btn' id='btn'>Результаты</button>
<script>
  btn.onclick = function() {
   var a = document.querySelectorAll('.pagination a');
   for (var i=0; i<a.length; i++)  {
     var sel = a[i].getAttribute('href') + ' input:checked';
     if(document.querySelector(sel)) a[i].classList.remove('red');
     else a[i].classList.add('red');
   }
}
</script>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2015, 16:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от SLameN
Как добавить class к <a> в блоке pagination, когда пользователь ничего не выбрал в input в одном из блоков question-1 или 2 или 3 и т.д.?
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
<link rel="stylesheet/less" type="text/css" href="style.less">
<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.5.0/less.min.js"></script>
-->
<style type='text/css'>
.no {
	color: red;
}
</style>
<script type='text/javascript'>
$(function(){
	$('button').click(function(){
		$('.pagination a').removeClass('no');
		$('.pagination a').each(function(){
			var name=$(this).attr('href').split('#')[1];
			var o=$('[name="'+name+'"]:checked');
			if (o.length==0) {
				$(this).addClass('no');
			};
		});
	});
});
</script>
</head>
<body>
<div class='test-data'>
    <div class='question' data-id='1' id='question-1'>
        <p class='q'>Вопрос 1</p>
        <p class='a'><input type='radio' id='answer-1' name='question-1' value='1'>
        <label for='answer-1'>Ответ 1</label></p>
        <p class='a'><input type='radio' id='answer-2' name='question-1' value='2'>
        <label for='answer-2'>Ответ 2</label></p>
        <p class='a'><input type='radio' id='answer-3' name='question-1' value='3'>
        <label for='answer-3'>Ответ 3</label></p>
    </div>
    <div class='question' data-id='2' id='question-2'>
        <p class='q'>Вопрос 2</p>
        <p class='a'><input type='radio' id='answer-4' name='question-2' value='4'>
        <label for='answer-4'>Ответ 1</label></p>
        <p class='a'><input type='radio' id='answer-5' name='question-2' value='5'>
        <label for='answer-5'>Ответ 2</label></p>
    </div>
</div>
<div class="pagination">
    <a class="nav-active" href="#question-1">1</a>
    <a href="#question-2">2</a>
    <a href="#question-5">3</a>
</div>
<button class='center btn' id='btn'>Результаты</button>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2015, 16:55
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Спасибо большое!

А можно ли вызывать функцию при нажатии на любой input?

btn.onclick


Цель: У пользователя например 40 вопросов (40 пагинаций), он может пропустить вопрос и не нажать input и при нажатии на другой будет срабатывать эта функция (чтобы можно было увидеть вопрос, где не выбран Input)
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2015, 17:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

SLameN,
поставьте на 'test-data'
document.querySelector('.test-data').onclick
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2015, 08:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от SLameN
А можно ли вызывать функцию при нажатии на любой input?
Функцию можно вызывать при любом событии...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление из html select в html input type=text Senderok Events/DOM/Window 4 18.12.2013 00:10
Добавление input в форму za-ek Events/DOM/Window 6 15.06.2013 21:04
Динамический Select или Input (автозаполнение, добавление данных, обновление) kudinov Элементы интерфейса 0 21.09.2010 14:12
Добавление текста к input элементу Cepin Элементы интерфейса 4 05.05.2010 09:10
Добавление класса на елемент по id при фокусе на input Andrew_tl Events/DOM/Window 1 18.02.2010 19:09