Мне нужно разрешить пользователям нажимать на серию div. Они в основном выбирают x количество элементов (каждый элемент находится в div) для добавления в группу. Каждый элемент может быть добавлен только один раз. Но они также должны иметь возможность отменить выбор предметов.Нужно переключать выбранные divs и приращение счетчика
Каждый раз, когда элемент выбран, его идентификатор добавляется в поле формы, поэтому я могу зафиксировать список всех выделенных элементов с разделителями-запятыми.
Только x количество элементов может быть выбрано. Поэтому мне нужно сохранить количество подсчётов, выбранных в списке, и одновременно остановить возможность выбора дополнительных элементов. Конечно, если выбранный элемент не выбран, счет будет увеличиваться.
То, что у меня есть, добавляет правильный идентификатор элемента в поле формы и правильно включает и отключает стиль div при каждом нажатии. Однако он просто добавляет идентификаторы в поле формы. Без ограничений для номера «x» и без удаления идентификаторов, когда элемент не выбран.
Любая помощь была бы удивительным соусом.
Вот HTML:
<h3 style="border-top:none;padding-top:0;">Choose <div id="boxQ">3</div> Items for Your Box</h3>
{% set featuredCollection = 'clctn-box-items'|collection %}
{% for product in featuredCollection.products %}
<div class="row">
<div class="twelve columns">
<div class="box-items" id="tag{{ product.id }}" value="{{ product.id }}">
{{ product.name }} <img class="box-item-thumb" align="right" src="{{ product.images.first.thumbnail('auto', 65)|default('http://placehold.it/100x65') }}"/>
</div>
</div>
</div>
{% endfor %}
<input type="text" id="boxItemIDs" name="box_item_ids" value="">
Вот CSS:
.box-items {
padding: 5px;
margin: 5px 5px 5px 5px;
border-left: 4px solid #ff7b01;
min-height:75px;
width:100%;
display:inline-block;
background-color:#efefef;
cursor: pointer;
}
.itemClicked {background-color:grey;}
Вот JQuery:
//
// Set Selected Item Count - numer of items allowed for this box
//
var itemCount;
$(function() {
var urlString = window.location.href;
var thesplit = urlString.substring(urlString.lastIndexOf("/")+1).split('-');
itemCount = thesplit[0];
});
//
// Handle Box Item Clicks
//
var count = 0;
$(document).ready(function() {
document.getElementById("boxQ").innerHTML = itemCount;
$('div[id^="tag"]').on('click', function() {
var $thisDiv = $(this);
count++;
$thisDiv.toggleClass("itemClicked");
var ids = $(this).attr('value');
var resultObj = $("#boxItemIDs");
var stringToAppend = resultObj.val().length > 0 ? resultObj.val() + "," : "";
resultObj .val(stringToAppend + ids);
});
});
Вот скрипку я создал для него: https://jsfiddle.net/3z1uoL8f/ Это не работает, хотя ,
Вы могли бы создать скрипку? И, пожалуйста, дайте нам окончательный клиентский HTML-код. – andi
Я не видел никаких условий, определенных в вашем коде, который использует 'count'? – renakre
Я буду работать на скрипке для этого. В прошлый раз я не мог заставить его бежать. Я попробую еще раз. И счет еще не интегрирован ... скорее, я ранее удалил то, что я пробовал b/c, он не работал. –