За последние 24 часа нас посетили 29556 программистов и 1819 роботов. Сейчас ищут 1152 программиста ...

Активировать и деактивировать кнопку по условии

Тема в разделе "JavaScript и AJAX", создана пользователем Daulet, 3 ноя 2014.

  1. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    Здравствуйте, как можно сделать кнопку чтобы активировался и деактивировался по условии:
    если хоть одна значения из 3-х раскрывающих списка равнялся нулю: деактивировать
    если 3 раскрывающие списки больше нули: активировать

    Код (Text):
    1. <p>
    2. <select name="filter_x" >
    3.   <option>0</option>
    4.   <option>1</option>
    5.   <option>2</option>
    6. </select>
    7. </p>
    8. <p>
    9. <select name="filter_y" >
    10.   <option>0</option>
    11.   <option>1</option>
    12.   <option>2</option>
    13. </select>
    14. </p>
    15. <select name="filter_z" >
    16.   <option>0</option>
    17.   <option>1</option>
    18.   <option>2</option>
    19. </select>
    20. </p>
    21. <input type="submit" value="Найти" class="button" name="filter" />
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    короткий ответ: javascript

    чуть более подробный ответ:
    1. текст у option это текст, а не значение. укажите value="{ваше_значение}"
    2. создайте некоторую функцию которая спросит у трех селектов их значение и запишет логическое значение доступности у кнопки. там всего одна строка в этой функции будет.
    3. назначьте эту функцию на событие изменения каждого из ваших селектов.
     
  3. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    сделал так что-то не получается
    Код (Text):
    1. <BODY>
    2. <script type="text/javascript">
    3. function butnx()
    4. {
    5.     var filter_x = document.getElementById('filter_x');
    6.     var filter_y = document.getElementById('filter_y');
    7.     var filter_z = document.getElementById('filter_z');
    8.     var butn = document.getElementById('');
    9.     filter_x.value !=0 ? butn.disabled = false : butn.disabled = true;
    10. }
    11. </script>
    12.  
    13.  
    14. <p>
    15. <select name="filter_x"  id="filter_x" onkeyup="butnx();" onkeypress="butnx();" onchange="butnx();">
    16.   <option value="0">0</option>
    17.   <option value="1">1</option>
    18.   <option value="2">2</option>
    19. </select>
    20. </p>
    21. <p>
    22. <select name="filter_y"  id="filter_y" onkeyup="butnx();" onkeypress="butnx();" onchange="butnx();">
    23.   <option value="0">0</option>
    24.   <option value="1">1</option>
    25.   <option value="2">2</option>
    26. </select>
    27. </p>
    28. <select name="filter_z" id="filter_z" onkeyup="butnx();" onkeypress="butnx();" onchange="butnx();">
    29.   <option value="0">0</option>
    30.   <option value="1">1</option>
    31.   <option value="2">2</option>
    32. </select>
    33. </p>
    34. <input type="button" id="butn" value="Найти"  disabled="disabled" />
    35. </BODY>
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а какой элемент-то выбирается в переменную butn?
     
  5. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    Ganzal, спасибо вот так получился
    Код (Text):
    1.  var butn = document.getElementById('butn');
    2.     filter_x.value !=0 && filter_y.value !=0 && filter_z.value !=0 ? butn.disabled = false : butn.disabled = true;
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    отличная новость.

    но все же события лучше навешивать не инлайн а через методы DOM. и естественно держать JS во внешних файлах.
    Код (Text):
    1.  
    2. // объявили функцию
    3. function filter_check() {
    4.     document.getElementById('butn').disabled = (
    5.             document.getElementById('filter_x').value === '0' ||
    6.             document.getElementById('filter_y').value === '0' ||
    7.             document.getElementById('filter_z').value === '0'
    8.         ) ? true : false;
    9. }
    10.  
    11. // навешиваем. достаточно только события change, кстати.
    12. document.getElementById('filter_x').addEventListener('change', filter_check);
    13. document.getElementById('filter_y').addEventListener('change', filter_check);
    14. document.getElementById('filter_z').addEventListener('change', filter_check);
     
  7. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    ок заменил код

    Добавлено спустя 14 минут 3 секунды:
    а если добавить еще одну кнопку, при нажатии на кнопку активировался и деактивировался другая кнопка??? условии такие больше 0 или равно 0
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    еще раз? добавить кнопку это понятно - элемент button. при нажатии тоже понятно - событие click. аткив/деактив другой кнопки - свойство disabled, уже прошли в этой теме. а больше нуля равно нулю не понятно. где то значение которое мы с нулем сравниваем? подробнее идею распишите, пожалуйста.
     
  9. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    условии такие, только после нажатии кнопки "актив" активировался или деактивировался кнопка "Найти"
    [​IMG]
    Код (Text):
    1. <BODY>
    2. <script type="text/javascript">
    3. // объявили функцию
    4. function filter_check() {
    5.     document.getElementById('butn').disabled = (
    6.             document.getElementById('filter_x').value === '0' ||
    7.             document.getElementById('filter_y').value === '0' ||
    8.             document.getElementById('filter_z').value === '0'
    9.         ) ? true : false;
    10. }
    11. </script>
    12.  
    13. <p>
    14. <select name="filter_x"  id="filter_x" onchange="filter_check();">
    15.   <option value="0">0</option>
    16.   <option value="1">1</option>
    17.   <option value="2">2</option>
    18. </select>
    19. </p>
    20. <p>
    21. <select name="filter_y"  id="filter_y" onchange="filter_check();">
    22.   <option value="0">0</option>
    23.   <option value="1">1</option>
    24.   <option value="2">2</option>
    25. </select>
    26. </p>
    27. <select name="filter_z" id="filter_z" onchange="filter_check();">
    28.   <option value="0">0</option>
    29.   <option value="1">1</option>
    30.   <option value="2">2</option>
    31. </select>
    32. </p>
    33. <input type="button" id="butn" value="Найти" disabled="disabled" />
    34. <input type="button" id="butn111" value="Актив" disabled="disabled" />
    35. </BODY>
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    и снова логика не очевидна.
    меняем селекты - должна отключаться кнопка "актив" насколько я понял, да?
    а по нажатию на активную кнопку "актив" должна активироваться кнопка "найти" что ли?

    вы логику словами подробно распишите. и в этом ответе кстати уже будет содержаться правильно решение.
     
  11. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    Ganzal, поменял картину
    да
    Кнопка "Актив" постоянно активная, если нажав на кнопку "Актив" смотрит на условии
    условия те же как на первом сообщении
    и соответственно активирует или декактивирует кнопку "Найти"

    Добавлено спустя 3 минуты 24 секунды:
    вроде так
    Код (Text):
    1. <BODY>
    2. <script type="text/javascript">
    3. // объявили функцию
    4. function filter_check() {
    5.     document.getElementById('butn').disabled = (
    6.             document.getElementById('filter_x').value === '0' ||
    7.             document.getElementById('filter_y').value === '0' ||
    8.             document.getElementById('filter_z').value === '0'
    9.         ) ? true : false;
    10. }
    11. </script>
    12.  
    13. <p>
    14. <select name="filter_x"  id="filter_x">
    15.   <option value="0">0</option>
    16.   <option value="1">1</option>
    17.   <option value="2">2</option>
    18. </select>
    19. </p>
    20. <p>
    21. <select name="filter_y"  id="filter_y">
    22.   <option value="0">0</option>
    23.   <option value="1">1</option>
    24.   <option value="2">2</option>
    25. </select>
    26. </p>
    27. <select name="filter_z" id="filter_z">
    28.   <option value="0">0</option>
    29.   <option value="1">1</option>
    30.   <option value="2">2</option>
    31. </select>
    32. </p>
    33. <input type="button" id="butn" value="Найти" disabled="disabled"/>
    34. <input type="button" value="Актив" onclick="filter_check()"/>
    35. </BODY>
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну да.
     
  13. Daulet

    Daulet Активный пользователь

    С нами с:
    14 авг 2014
    Сообщения:
    49
    Симпатии:
    1
    Спасибо еще раз