Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выбор только нескольких пунктов (https://javascript.ru/forum/misc/63254-vybor-tolko-neskolkikh-punktov.html)

PonyS 26.05.2016 19:14

Вот как Decode сделал, то можно изменить class у 5-и div, но только с 1-го по 5-й, а если я хочу изменить вот так к примеру: 3, 6, 8, 10, 7 - но так я не могу... То бишь почему-то после 5-го div все остальные неактивные для изменения стали... скорее всего из-за селектора lt, но альтернативы что-то не могу найти

Dilettante_Pro 26.05.2016 19:15

Цитата:

Сообщение от PonyS (Сообщение 417715)
Вы о чем?

да вот об этом
Цитата:

а мне нужно чтобы была возможность выбрать без привязки

PonyS 26.05.2016 19:19

Цитата:

Сообщение от Dilettante_Pro (Сообщение 417718)
да вот об этом

Я просто попросил помощи, если вы об этом т.к. зашел в тупик уже...

Dilettante_Pro 26.05.2016 19:25

PonyS,
Я просто немного забежал вперед в ваших просьбах.
А как вы хотите определять, какие блоки переключать?

Decode 26.05.2016 19:25

PonyS, так?
<!doctype html>
<html>
<head>
  <meta charset="utf-8" /
  <title></title>
  <style>
    .select {
      background: red;
    }
  </style>
</head>
<body>
  <p class="price">1</p>
  <p class="price">2</p>
  <p class="price">3</p>
  <p class="price">4</p>
  <p class="price">5</p>
  <p class="price">6</p>
  <p class="price">7</p>
  <p class="price">8</p>
  <p class="price">9</p>
  <p class="price">10</p>
  <input type="hidden" value="5" />
  
  <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <script>
    var count = $('input[type=hidden]').val(), i = 1;

    $('.price').click(function() {
      toggleClass(this);
    });

    function toggleClass(elem) {
      if (i > count && !$(elem).hasClass('select')) return;

      ( $(elem).hasClass('select') ) ? ( $(elem).removeClass('select'), i-- ) : ($(elem).addClass('select'), i++);

    }
  </script>
</body>
</html>

PonyS 26.05.2016 19:30

Цитата:

Сообщение от Decode (Сообщение 417721)
PonyS, так?
<!doctype html>
<html>
<head>
  <meta charset="utf-8" /
  <title></title>
  <style>
    .select {
      background: red;
    }
  </style>
</head>
<body>
  <p class="price">1</p>
  <p class="price">2</p>
  <p class="price">3</p>
  <p class="price">4</p>
  <p class="price">5</p>
  <p class="price">6</p>
  <p class="price">7</p>
  <p class="price">8</p>
  <p class="price">9</p>
  <p class="price">10</p>
  <input type="hidden" value="5" />
  
  <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <script>
    var count = $('input[type=hidden]').val(), i = 1;

    $('.price').click(function() {
      toggleClass(this);
    });

    function toggleClass(elem) {
      if (i > count && !$(elem).hasClass('select')) return;

      ( $(elem).hasClass('select') ) ? ( $(elem).removeClass('select'), i-- ) : ($(elem).addClass('select'), i++);

    }
  </script>
</body>
</html>

Да,очень помогли, спасибо большое!

PonyS 26.05.2016 19:55

Подскажите пожалуйста последнее, пробую получить значения что я выбрал из <p class="place"> по клику и занести его в input text, но не получается занести все что выбрал, а только 1-но, последнее что выбрал. То бишь к примеру я изменил class 3-у, 5-у, -6у блоку, и в input text после изменения каждого(по очереди) записывались данные из тега <p>, то бишь вышло бы так : <input type="text" value="3,5,6">, пробую вот так:

<script>
    var count = $('input[type=hidden]').val(), i = 1;

    $('.place').click(function() {
      toggleClass(this);
	 var text = $(this).text();//получаю значение .place
	 $('input[type=text]').val($(this).text() + $(this).text());//заношу в input значение из place
    });

    function toggleClass(elem) {
      if (i > 5 && !$(elem).hasClass('select')) return;

      ( $(elem).hasClass('select') ) ? ( $(elem).removeClass('select'), i-- ) : ($(elem).addClass('select'), i++);

    }
  </script>


В итоге с моим скриптом выходит просто дубль 1-го p что я выбрал, <input type="text" value="88">

рони 26.05.2016 20:05

Decode,
строка 4!!!

рони 26.05.2016 20:05

PonyS,
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style>
    .select {
      background: red;
    }
  </style>
</head>
<body>
  <p class="price">1</p>
  <p class="price">2</p>
  <p class="price">3</p>
  <p class="price">4</p>
  <p class="price">5</p>
  <p class="price">6</p>
  <p class="price">7</p>
  <p class="price">8</p>
  <p class="price">9</p>
  <p class="price">10</p>
  <input type="hidden" value="5" />
  <input type="text" value="">
  <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <script>
    var count = $('input[type=hidden]').val();
    $('.price').click(function() {
     $(this).toggleClass('select', $('.select').length < count && !$(this).is('.select'));
     var arr = [];
      $('.price').each(function(i,el){
            $(el).is('.select') && arr.push(++i)
            });
      $('input[type=text]').val(arr)
    });

  </script>
</body>
</html>

PonyS 26.05.2016 20:17

Цитата:

Сообщение от рони (Сообщение 417731)
PonyS,
<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style>
    .select {
      background: red;
    }
  </style>
</head>
<body>
  <p class="price">1</p>
  <p class="price">2</p>
  <p class="price">3</p>
  <p class="price">4</p>
  <p class="price">5</p>
  <p class="price">6</p>
  <p class="price">7</p>
  <p class="price">8</p>
  <p class="price">9</p>
  <p class="price">10</p>
  <input type="hidden" value="5" />
  <input type="text" value="">
  <script src="https://code.jquery.com/jquery-2.1.4.js"></script>
  <script>
    var count = $('input[type=hidden]').val();
    $('.price').click(function() {
     $(this).toggleClass('select', $('.select').length < count && !$(this).is('.select'));
     var arr = [];
      $('.price').each(function(i,el){
            $(el).is('.select') && arr.push(++i)
            });
      $('input[type=text]').val(arr)
    });

  </script>
</body>
</html>

Спасибо большое, буду дальше изучать js)


Часовой пояс GMT +3, время: 19:55.