Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2018, 11:30
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Работа с select
Добрый день, подскажите как отлавливать изменение значений внутри select.

Создадим пару вкладок select:

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div id="text"></div>
<div id="box"></div>
<button id="click">Все 100%</button>
<script type="text/javascript">
var data = ['первый', 'второй', 'третий'];

var name = "";
for (i = 0; i < data.length; i++){
     name += data[i] +  '<br>' + '<select class="selectB">'+
                                    '<option>0%</option>'+
                                    '<option>10%</option>'+
                                    '<option>20%</option>'+
                                    '<option>30%</option>'+
                                    '<option>40%</option>'+
                                    '<option>50%</option>'+
                                    '<option>60%</option>'+
                                    '<option>70%</option>'+
                                    '<option>80%</option>'+
                                    '<option>90%</option>'+
                                    '<option>100%</option>'+
                      '</select>' + '<br>'
};
$("#box").html(name);

$("#click").click(function(){
    $(".selectB").val('100%');
    if($(".selectB").val() == '100%'){
          $("#text").html('Все выполнено');
    } else{
         $("#text").html('');
    };
});
</script>


В данном примере если жмем на кнопку "Все 100%" все select заполняются на 100% и срабатывает событие.

А нужно подобное событие если вручную ткнуть каждую select и выбрать там 100%, как это можно написать, подскажите пожалуйста
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2018, 11:47
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

$(".selectB").change(function(){
		$("#text").html($(".selectB").get().every(el=> el.value == '100%')?'Все выполнено':'');
	});
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2018, 11:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Artur_Hopf,

$("select").change(function() {
     if(this.value == "100%")  ....
})
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2018, 12:05
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

j0hnik,
рони,
Спасибо, но нужно чтоб событие срабатывало только когда они все 100%
То есть если хотя бы один из них не 100%, событие не сработало
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2018, 12:08
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

j0hnik,
Все работает, спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2018, 16:50
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Дополнительный вопрос
Дополнительный вопрос, если я еще к каждому select добавлю кнопки и скрою их. Как сделать так чтобы при событии не равном 100% появлялась только определенная кнопка. Вот пример, но у меня появятся все кнопки
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div id="text"></div>
<div id="box"></div>
<button id="click">Все 100%</button>
<script type="text/javascript">
var data = ['первый', 'второй', 'третий'];
 
var name = "";
for (i = 0; i < data.length; i++){
     name += data[i] +  '<br>' +'<button hidden="true" class="dutton">Комментарий</button>'+ 
                                    '<select class="selectB">'+
                                    '<option>0%</option>'+
                                    '<option>10%</option>'+
                                    '<option>20%</option>'+
                                    '<option>30%</option>'+
                                    '<option>40%</option>'+
                                    '<option>50%</option>'+
                                    '<option>60%</option>'+
                                    '<option>70%</option>'+
                                    '<option>80%</option>'+
                                    '<option>90%</option>'+
                                    '<option>100%</option>'+
                      '</select>' + '<br>'
};

$("#box").html(name);

$(".selectB").change(function() {
    if($(this).val() != '100%'){
     $('.dutton').prop('hidden', false);
    }else{
    $('.dutton').prop('hidden', true);
    };
});

 
$("#click").click(function(){
    $(".selectB").val('100%');
    if($(".selectB").val() == '100%'){
          $("#text").html('Все выполнено');
          $('.dutton').prop('hidden', true);
    } else{
         $("#text").html('');
    };
});
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2018, 16:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Artur_Hopf,
$(".selectB").change(function() {
    $(this).prev().toggle(this.value != '100%');
});
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2018, 17:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Artur_Hopf,
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<div id="text"></div>
<div id="box"></div>
<button id="click">Все 100%</button>
<script type="text/javascript">
var data = ['первый', 'второй', 'третий'];

var name = "";
for (i = 0; i < data.length; i++){
     name += data[i] +  '<br>' +'<button hidden="true" class="dutton">Комментарий</button>'+
                                    '<select class="selectB">'+
                                    '<option>0%</option>'+
                                    '<option>10%</option>'+
                                    '<option>20%</option>'+
                                    '<option>30%</option>'+
                                    '<option>40%</option>'+
                                    '<option>50%</option>'+
                                    '<option>60%</option>'+
                                    '<option>70%</option>'+
                                    '<option>80%</option>'+
                                    '<option>90%</option>'+
                                    '<option>100%</option>'+
                      '</select>' + '<br>'
};

$("#box").html(name);

$(".selectB").change(function() {
    $(this).prev().toggle(this.value != '100%' && +$("#text").html(''));
});


$("#click").click(function(){
    $(".selectB").val('100%').change();
    $("#text").html('Все выполнено');
});
</script>
Ответить с цитированием
  #9 (permalink)  
Старый 30.05.2018, 08:04
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
Спасибо большое
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Java Script, совместная работа textarea с select option Алекс_ Элементы интерфейса 1 12.05.2015 08:13
Работа с select agstm Общие вопросы Javascript 4 17.05.2013 11:25
Работа с выпадающим списком (SELECT) Bogus Общие вопросы Javascript 14 11.03.2013 08:39
Подгрузка select и работа с ними после! BASSON_XVI jQuery 3 07.01.2011 11:28
Работа Select в firefox Grid Firefox/Mozilla 0 05.02.2010 17:42