Другое действие по повторному клику на кнопке

138
21 ноября 2018, 18:00

Есть форма поиска. По нажатию на кнопку, появляется input с возможностью ввода поискового запроса. После того, как пользователь введет поисковый запрос, нужно чтобы повторное нажатие по кнопке приводило к отправке формы.

var buttonSearch = document.querySelector(".site-nav__button-search"); 
var fieldSearch = document.querySelector(".site-nav__search-field"); 
 
buttonSearch.addEventListener("click", function(evt) { 
  evt.preventDefault(); 
  fieldSearch.classList.add("site-nav__search-field--show"); 
});
.site-nav__search { 
  display: flex; 
} 
 
.site-nav__search-field { 
  display: none; 
} 
 
.site-nav__search-field--show { 
  display: block; 
}
<form class="site-nav__search" action="search.php" method="post"> 
  <input class="site-nav__search-field" name="search" type="text"> 
  <button class="site-nav__button-search">Поиск</button> 
</form>

Answer 1

var buttonSearch = document.querySelector(".site-nav__button-search"), 
    fieldSearch = document.querySelector(".site-nav__search-field"), 
    flag; 
buttonSearch.addEventListener("click", function(evt) { 
  !flag && evt.preventDefault(); 
  fieldSearch.classList[!flag ? 'add' : 'remove']("site-nav__search-field--show"); 
  flag = !flag; 
});
.site-nav__search { 
  display: flex; 
} 
 
.site-nav__search-field { 
  display: none; 
} 
 
.site-nav__search-field--show { 
  display: block; 
}
<form class="site-nav__search" action="search.php" method="post"> 
  <input class="site-nav__search-field" name="search" type="text"> 
  <button class="site-nav__button-search">Поиск</button> 
</form>

READ ALSO
Что значит запись вида const { name } = value?

Что значит запись вида const { name } = value?

Увидел в описании использования одного из npm-пакетов запись вида const { NAME } = valueВ JavaScript не профи, так что никак не могу понять/найти зачем эти...

145
Подмена src в iframe для Ion Range Slider и RsForm

Подмена src в iframe для Ion Range Slider и RsForm

Есть калькулятор на RSForm и JSРаньше, когда изменения происходили просто по onchange или oninput какого-либо radio/checkbox, все работало приемлемо

204
Отсеивание элементов массива [дубликат]

Отсеивание элементов массива [дубликат]

На данный вопрос уже ответили:

128
Смена элементов

Смена элементов

Есть следующие элементы:

122