Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать чтобы в текст button менялось значение в зависимости от количества выбран (https://javascript.ru/forum/misc/73067-kak-sdelat-chtoby-v-tekst-button-menyalos-znachenie-v-zavisimosti-ot-kolichestva-vybran.html)

mopsusha 19.03.2018 14:29

Как сделать чтобы в текст button менялось значение в зависимости от количества выбран
 
Как сделать чтобы в текст button менялось значение в зависимости от количества выбранных select например выбираем 2 селекта в button текст меняется на Район (2), выбираем 3 селекта в button текст меняется на Район (3), то есть шел подсчет количества выбранных селектов и передача в поле button.

Вот полный код, то есть по сути надо чтобы подсчитывалось количество li с классом active selected в div который следующий после lable с кнопкой button и передавалось это количество в button например район (3)

<li style=" clear:both;" class="magic-select">
<div class="subclass">

<label class="group-label">
<button type="button" id="g-161-xf_1" class="select exfield exgroup1 label_block switch-target opened" href="#" onclick="jaMagicSelect(this, 'mg-161-xf_1'); return false;" title="Район">Район
</button>
</label>
<div class="ja-magic-select" id="mg-161-xf_1" data-autofilter="0" style="display: block;">
<ul>
<li rel="2" class="active">Автозаводский</li>
<li rel="3" class="active selected">Канавинский</li>
<li rel="4" class="active">Ленинский</li><li rel="5" class="active">Московский</li>
<li rel="6" class=" active">Нижегородский</li>
<li rel="7" class=" active">Приокский</li>
<li rel="8" class=" active">Советский</li><li rel="9" class=" active">Сормовский</li>
</ul>
<span class="btn-close" onclick="jaMagicSelectClose(this, 'mg-161-xf_1'); return false;">Close</span><span class="arrow">&nbsp;</span></div><div id="mg-161-xf_1-container" class="ja-magic-select-container">
<span id="mg-161-xf_1-3">Канавинский<input type="hidden" name="xf_1[]" value="3">
<span rel="3" class="remove" title="Remove"></span></span></div>
    <script type="text/javascript">
    jQuery(document).ready( function(){
        jaMagicInit('mg-161-xf_1', 'xf_1');
    });
    </script>       
</div>

</li>

laimas 19.03.2018 14:41

А что делает функция jaMagicInit(), не подсчитывает ли выбранных и подставляет их в текст?

j0hnik 19.03.2018 14:58

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
	<li style=" clear:both;" class="magic-select">
		<div class="subclass">

			<label class="group-label">
				<button type="button" id="g-161-xf_1" class="select exfield exgroup1 label_block switch-target opened" href="#" onclick="jaMagicSelect(this, 'mg-161-xf_1'); return false;" title="Район">Район
				</button>
			</label>
			<div class="ja-magic-select" id="mg-161-xf_1" data-autofilter="0" style="display: block;">
				<ul>
					<li rel="2" class="active">Автозаводский</li>
					<li rel="3" class="active selected">Канавинский</li>
					<li rel="4" class="active">Ленинский</li><li rel="5" class="active">Московский</li>
					<li rel="6" class=" active">Нижегородский</li>
					<li rel="7" class=" active">Приокский</li>
					<li rel="8" class=" active">Советский</li><li rel="9" class=" active">Сормовский</li>
				</ul>
				<span class="btn-close">Close</span><span class="arrow">&nbsp;</span></div><div id="mg-161-xf_1-container" class="ja-magic-select-container">
					<span id="mg-161-xf_1-3">Канавинский<input type="hidden" name="xf_1[]" value="3">
						<span rel="3" class="remove" title="Remove"></span></span></div>
						
					</div>

				</li>

				<script>
					document.querySelector(".ja-magic-select").addEventListener('click', leng);
					function leng(){document.querySelector("#g-161-xf_1").textContent =	'Район ('+document.querySelectorAll(".ja-magic-select li.active").length+')';
				}
				leng();
			</script>  
		</body>
		</html>

Dilettante_Pro 19.03.2018 16:00

М.б. как-то так?
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
          <style>
          .selected { color: red;};
         </style>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
	<li style=" clear:both;" class="magic-select">
		<div class="subclass">

			<label class="group-label">
				<button type="button" id="g-161-xf_1" class="select exfield exgroup1 label_block switch-target opened" href="#" onclick="jaMagicSelect(this, 'mg-161-xf_1'); return false;" title="Район">Район (0)
				</button>
			</label>
			<div class="ja-magic-select" id="mg-161-xf_1" data-autofilter="0" style="display: block;">
				<ul>
					<li rel="2" class="active">Автозаводский</li>
					<li rel="3" class="active selected">Канавинский</li>
					<li rel="4" class="active">Ленинский</li><li rel="5" class="active">Московский</li>
					<li rel="6" class=" active">Нижегородский</li>
					<li rel="7" class=" active">Приокский</li>
					<li rel="8" class=" active">Советский</li><li rel="9" class=" active">Сормовский</li>
				</ul>
				<span class="btn-close">Close</span><span class="arrow">&nbsp;</span></div><div id="mg-161-xf_1-container" class="ja-magic-select-container">
					<span id="mg-161-xf_1-3">Канавинский<input type="hidden" name="xf_1[]" value="3">
						<span rel="3" class="remove" title="Remove"></span></span></div>
						
					</div>

				</li>

				<script>
					document.querySelector(".ja-magic-select").addEventListener('click', leng);
					function leng(event){
                          event.target.classList.toggle("selected");
                          var but = document.querySelector("#g-161-xf_1");
                           but.textContent = but.textContent.replace(/\d+/, document.querySelectorAll(".ja-magic-select li.selected").length);
				}
                                var stEl = document.querySelector(".ja-magic-select .selected");
				stEl.click(); stEl.click();
			</script>  
		</body>
		</html>

laimas 19.03.2018 16:04

Dilettante_Pro,
если функция объявленная в коде подсчитывают такое и помещают в кнопку при загрузке страницы, то .textContent.replace(/\d+/, document.querySelectorAll(".ja-magic-select li.selected").length;

И может как-то увязать тогда с существующей функцией.

Dilettante_Pro 19.03.2018 16:31

laimas,
Цитата:

Сообщение от laimas
если функция объявленная в коде подсчитывают такое и помещают в кнопку при загрузке страницы, то .textContent.replace(/\d+/, document.querySelectorAll(".ja-magic-select li.selected").length;

Изменил

Цитата:

Сообщение от laimas
И может как-то увязать тогда с существующей функцией.

Какой? jaMagicSelect ? Она работает по клику на кнопку, и, по идее, делает что-то другое ( и неизвестно что)

laimas 19.03.2018 16:33

У него кругом передается g-161-xf_1, может где-то и есть нужное.

Цитата:

Сообщение от Dilettante_Pro
Какой? jaMagicSelect ?

jaMagicInit('mg-161-xf_1', 'xf_1');

mopsusha 19.03.2018 19:31

Не понимаю почему, но на сайте почему-то не работает.

mopsusha 19.03.2018 19:33

Цитата:

Сообщение от Dilettante_Pro (Сообщение 480935)
М.б. как-то так?
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
          <style>
          .selected { color: red;};
         </style>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
	<li style=" clear:both;" class="magic-select">
		<div class="subclass">

			<label class="group-label">
				<button type="button" id="g-161-xf_1" class="select exfield exgroup1 label_block switch-target opened" href="#" onclick="jaMagicSelect(this, 'mg-161-xf_1'); return false;" title="Район">Район (0)
				</button>
			</label>
			<div class="ja-magic-select" id="mg-161-xf_1" data-autofilter="0" style="display: block;">
				<ul>
					<li rel="2" class="active">Автозаводский</li>
					<li rel="3" class="active selected">Канавинский</li>
					<li rel="4" class="active">Ленинский</li><li rel="5" class="active">Московский</li>
					<li rel="6" class=" active">Нижегородский</li>
					<li rel="7" class=" active">Приокский</li>
					<li rel="8" class=" active">Советский</li><li rel="9" class=" active">Сормовский</li>
				</ul>
				<span class="btn-close">Close</span><span class="arrow">&nbsp;</span></div><div id="mg-161-xf_1-container" class="ja-magic-select-container">
					<span id="mg-161-xf_1-3">Канавинский<input type="hidden" name="xf_1[]" value="3">
						<span rel="3" class="remove" title="Remove"></span></span></div>
						
					</div>

				</li>

				<script>
					document.querySelector(".ja-magic-select").addEventListener('click', leng);
					function leng(event){
                          event.target.classList.toggle("selected");
                          var but = document.querySelector("#g-161-xf_1");
                           but.textContent = but.textContent.replace(/\d+/, document.querySelectorAll(".ja-magic-select li.selected").length);
				}
                                var stEl = document.querySelector(".ja-magic-select .selected");
				stEl.click(); stEl.click();
			</script>  
		</body>
		</html>

Что может быть не так? не работает и ошибки не выдает.

mopsusha 19.03.2018 19:57

Цитата:

Сообщение от j0hnik (Сообщение 480930)
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
	<li style=" clear:both;" class="magic-select">
		<div class="subclass">

			<label class="group-label">
				<button type="button" id="g-161-xf_1" class="select exfield exgroup1 label_block switch-target opened" href="#" onclick="jaMagicSelect(this, 'mg-161-xf_1'); return false;" title="Район">Район
				</button>
			</label>
			<div class="ja-magic-select" id="mg-161-xf_1" data-autofilter="0" style="display: block;">
				<ul>
					<li rel="2" class="active">Автозаводский</li>
					<li rel="3" class="active selected">Канавинский</li>
					<li rel="4" class="active">Ленинский</li><li rel="5" class="active">Московский</li>
					<li rel="6" class=" active">Нижегородский</li>
					<li rel="7" class=" active">Приокский</li>
					<li rel="8" class=" active">Советский</li><li rel="9" class=" active">Сормовский</li>
				</ul>
				<span class="btn-close">Close</span><span class="arrow">&nbsp;</span></div><div id="mg-161-xf_1-container" class="ja-magic-select-container">
					<span id="mg-161-xf_1-3">Канавинский<input type="hidden" name="xf_1[]" value="3">
						<span rel="3" class="remove" title="Remove"></span></span></div>
						
					</div>

				</li>

				<script>
					document.querySelector(".ja-magic-select").addEventListener('click', leng);
					function leng(){document.querySelector("#g-161-xf_1").textContent =	'Район ('+document.querySelectorAll(".ja-magic-select li.active").length+')';
				}
				leng();
			</script>  
		</body>
		</html>

Работает, однако если меняю класс active на selected показывает в 2 раза больше, то есть если выбираю 1 элемент показывает что выбр


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