Выбор только нескольких пунктов
Здравствуйте! Очень нужна ваша помощь, есть код добавления и удаления class у блока, вот он :
<script>
$(document).ready(function(){
$('.place').click(function () {
$(this).toggleClass('select');
});
});
</script>
В чем собственно проблема, мне нужно чтобы я мог задать количество возможных смен class, к примеру блоков 10, но я хочу чтобы я мог выбрать только 3 из 10(то бишь сменить class только у 3х, или у 6-и ), подскажите пожалуйста, как добавить ограничение по количеству смены class? Добавить к примеру переменную kol = 5; и она ограничивала смену class до 5и из 10 блоков. Заранее спасибо за помощь! |
PonyS, так?
$('.price:lt(3)').click(function() {
$(this).toggleClass('select');
});
|
Поставил код, но он почему-то не меняет class, ничего не происходит...Еще такой вопрос, смогу ли я значение 3 к примеру заменить на другое - кодом ? price:lt(3) к примеру взять значение из input hidden и поставить вместо 3 автоматом, или так с таким решением нельзя?
|
А нет, меняет - но только у первых 2х div почему-то, другие нельзя и выбрать могу только 2, нужно чтобы не было привязанности конкретно с первым, а на выбор можно было изменить, но в пределах 2х div , но хоть 3-й, хоть 8-й
|
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();
$('.price:lt(' +count+ ')').click(function() {
$(this).toggleClass('select');
});
</script>
</body>
</html>
|
Цитата:
|
Decode,
Цитата:
|
PonyS,
вы обьясните как выбирать? |
Цитата:
|
Цитата:
|
Вот как Decode сделал, то можно изменить class у 5-и div, но только с 1-го по 5-й, а если я хочу изменить вот так к примеру: 3, 6, 8, 10, 7 - но так я не могу... То бишь почему-то после 5-го div все остальные неактивные для изменения стали... скорее всего из-за селектора lt, но альтернативы что-то не могу найти
|
Цитата:
Цитата:
|
Цитата:
|
PonyS,
Я просто немного забежал вперед в ваших просьбах. А как вы хотите определять, какие блоки переключать? |
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>
|
Цитата:
|
Подскажите пожалуйста последнее, пробую получить значения что я выбрал из <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"> |
Decode,
строка 4!!! |
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>
|
Цитата:
|
Здравствуйте! Подскажите пожалуйста, как в этой переменной -
var count = $('input[type=hidden]').val();
сделать подсчет с нескольких полей hidden?(чтобы значение суммировалось и уже шло в скрипт) , к примеру в 1 hidden - 5 число, а в 2-м hidden - 2, в итоге в скрипте выводиться 7 и можно изменить class для 7и DIV. Заранее спасибо! Пробую вот так :
var count = $('input[name=adult]').val();
var count2 = $('input[name=adult2]').val();
var totalcount = count + count2;
|
Даже мой вариант считает, но почему-то конфликтует с выводом значения из div после смены, вот полный код:
<script>
var count = $('input[name=adult]').val(), count2 = $('input[name=adult2]').val(), totalcount;
totalcount = count + count2;
$('.price').click(function() {
$(this).toggleClass('select', $('.select').length < totalcount && !$(this).is('.select'));
var arr = [];
$('.price').each(function(i,el){
$(el).is('.select') && arr.push(+i)
});
$('input[name=mesto]').val(arr)
});
</script>
TotalCount переменная почему-то встает на то число которые указано в input mesto, а не суммирует adult и adult2, в чем может быть проблема? Если подключить в код document.write(totalcount); , то выведет не подсчет из adult и adult2, а число которое указано в div price |
PonyS,
totalcount = +count + +count2; |
Спасибо!!
|
Добрый вечер! Я сделал отправку и обновление данных в бд из div после смены class по этому скрипту что тут мне помогли реализовать, но появилась одна проблема: По клику скрипт меняем class у div и отправляет обновленный div в бд, и если нажать еще раз то div сменит еще раз class и отправит в бд повторно, а в чем собственно проблема- мне нужно чтобы если я сменил class у div то в html коде он отобразился как нужно с другим class, но в бд чтобы записался с другим классом(как бы поменять во время загрузки в бд), помогите пожалуйста куда копать с этим, какую функцию использовать?
|
Проблему решил, спасибо!
|
ТС, для кого-то заказ лепишь? Если не секрет конечно.
|
Цитата:
|
| Часовой пояс GMT +3, время: 07:09. |