Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 12.03.2015
Сообщений: 222
1

Прикрепление класса active к label

24.05.2017, 12:32. Показов 2182. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите код который бы прикреплял к label класс .active в том случае, если в рядом расположенном input есть текст или если на input есть фокус
HTML5
1
2
3
4
<div class="form_input">
    <input type="text" id="login" required>
    <label for="login" class="label">Логин</label>
</div>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2017, 12:32
Ответы с готовыми решениями:

Прикрепление класса label для непустого input
Доброй ночи. Нужен скрипт, который бы прикреплял к label класс .active в том случае, если в рядом...

Добавление / удаление класса active к ссылке
Подскажите пожалуйста, как добавить /удалить класс active при нажатии на ссылку, которая...

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

Доступ к объекту label класса из множества.
Допустим есть класс комментарием,в нем куча объектов label,а в них комментарии,как мне взять...

4
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
24.05.2017, 13:21 2
Лучший ответ Сообщение было отмечено Dzhon как решение

Решение

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
document.querySelector('div.form_input').childNodes.forEach(function(i){
  if(i.nodeType === 3) //надо удалить из дочерних узлов все текстовые узлы
    document.querySelector('div.form_input').removeChild(i);
})
var input = document.querySelector('div.form_input').querySelector('label').previousSibling;
var label = document.querySelector('div.form_input').querySelector('label');
input.addEventListener("focus", function(){
  label.setAttribute("class", "active");
})
input.addEventListener("blur", function(){
  if(this.value == ''){
    label.setAttribute("class", "label");
  }else{
    label.setAttribute("class", "active");
  }
})
if(input.value != ''){
  label.setAttribute("class", "active");
}
1
1 / 1 / 0
Регистрация: 12.03.2015
Сообщений: 222
24.05.2017, 14:01  [ТС] 3
Пифагор, Спасибо, и еще у меня подряд идут 2 div с классом form_input, js код срабатывает только на 1 div, как это исправить?
0
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
24.05.2017, 14:32 4
Лучший ответ Сообщение было отмечено Dzhon как решение

Решение

Вроде, так, если я верно понял, что надо:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<div class="form_input">
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
</div>
<script>
document.querySelector('div.form_input').childNodes.forEach(function(i){
  if(i.nodeType === 3) //надо удалить из дочерних узлов все текстовые узлы
    document.querySelector('div.form_input').removeChild(i);
})
for(var i = 0; i < document.querySelector('div.form_input').childNodes.length/2; i++){
  var input = document.querySelector('div.form_input').querySelectorAll('label')[i].previousSibling;
  var label = document.querySelector('div.form_input').querySelectorAll('label')[i];
  input.addEventListener("focus", function(e){
    e.target.nextSibling.setAttribute("class", "active");
  })
  input.addEventListener("blur", function(e){
    if(this.value == ''){
      e.target.nextSibling.setAttribute("class", "label");
    }else{
      e.target.nextSibling.setAttribute("class", "active");
    }
  })
  if(input.value != ''){
    label.setAttribute("class", "active");
  }
}
</script>
Добавлено через 12 минут
Не, не верно понял. Там 3 div form_input со своим label и input. Вот так надо, вероятно.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<div class="form_input">
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
</div>
<div class="form_input">
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
</div>
<div class="form_input">
<input type="text" id="login" required>
<label for="login" class="label">Логин</label>
</div>
<script>
for(var i = 0; i < document.querySelectorAll('div.form_input').length; i++){
  document.querySelectorAll('div.form_input')[i].childNodes.forEach(function(n){
  if(n.nodeType === 3) //надо удалить из дочерних узлов все текстовые узлы
    document.querySelectorAll('div.form_input')[i].removeChild(n);
  })
  var input = document.querySelectorAll('div.form_input')[i].querySelector('label').previousSibling;
  var label = document.querySelectorAll('div.form_input')[i].querySelector('label');
  input.addEventListener("focus", function(e){
    e.target.nextSibling.setAttribute("class", "active");
  })
  input.addEventListener("blur", function(e){
    if(this.value == ''){
      e.target.nextSibling.setAttribute("class", "label");
    }else{
      e.target.nextSibling.setAttribute("class", "active");
    }
  })
  if(input.value != ''){
    label.setAttribute("class", "active");
  }
}
</script>
1
1 / 1 / 0
Регистрация: 12.03.2015
Сообщений: 222
24.05.2017, 14:47  [ТС] 5
Пифагор, Спасибо))
0
24.05.2017, 14:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2017, 14:47
Помогаю со студенческими работами здесь

Cisco ASA Active/Standby, Active/Active
Добрый день! Возник вопрос не жизненно важный, но в гугле ответа не нашел) А какое максимальное...

Изменение label формы из класса
Знаю что было уже 50 тем и все объяснялось, но все же до меня не доходит. Собственно, есть 2...

Не отображаются ProgressBar и Label из класса
Вообщем код был громоздкий и я решил его раскидать по классам т вот какая проблема я обращаюсь ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru