Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Заменить выпадающий список на switch


mulka45

Recommended Posts

Добрый день, помогите пожалуйста, как выпадающий список который делает вкл/выкл заменить на свитч переключатель?

 

            <select name="status" id="input-status-<?=$product['product_id']?>" class="le-value _simple-value le-selector" data-field="status">
              <?php if ($product['status']) { ?>
                <option value="1" selected="selected"><?=$text_enabled?></option>
                <option value="0"><?=$text_disabled?></option>
                <?php } else { ?>
                <option value="1"><?=$text_enabled?></option>
                <option value="0" selected="selected"><?=$text_disabled?></option>
                <?php } ?>
            </select>

 

заменить на переключатель:

<li class="list-group-item">
    <label class="switch ">
        <input type="checkbox" class="success">
        <span class="slider round"></span>
    </label>
</li>

 

Надіслати
Поділитися на інших сайтах


<div class="input-group">						
  <div class="custom-control custom-switch">
  <?php if ($product['status']) { ?>
    <input name="status" value="1" class="custom-control-input" type="checkbox" id="switch-status" checked>
    <label class="custom-control-label" for="switch-status"><?php echo $text_enabled; ?></label>
  <?php } else { ?>
    <input name="status" value="0" class="custom-control-input" type="checkbox" id="switch-status">
    <label class="custom-control-label" for="switch-status"><?php echo $text_disabled; ?></label>
  <?php } ?>
  </div>
</div>

 

Как то так ну и код js чтобы при переключении менялось value и надпись включено отключено

 

<script>
var checkbox = document.getElementById('switch-status');

if (checkbox != null) {
	checkbox.addEventListener('change', function() {
		var checkbox_lable = document.querySelector('[for="switch-status"]');
		
		if (this.checked) {	
			this.value='1';
			checkbox_lable.innerText = <?php echo $text_enabled; ?>;
		} else {
			this.value='0';
			checkbox_lable.innerText = <?php echo $text_disabled; ?>;
		}
	})
}
</script>

 

  • +1 1
Надіслати
Поділитися на інших сайтах

1 час назад, zomo сказал:




<div class="input-group">						
  <div class="custom-control custom-switch">
  <?php if ($status) { ?>
    <input name="status" value="1" class="custom-control-input" type="checkbox" id="switch-status" checked>
    <label class="custom-control-label" for="switch-status"><?php echo $text_enabled; ?></label>
  <?php } else { ?>
    <input name="status" value="0" class="custom-control-input" type="checkbox" id="switch-status">
    <label class="custom-control-label" for="switch-status"><?php echo $text_disabled; ?></label>
  <?php } ?>
  </div>
</div>

 

Как то так ну и код js чтобы при переключении менялось value и надпись включено отключено

 





<script>
var checkbox = document.getElementById('switch-status');

if (checkbox != null) {
	checkbox.addEventListener('change', function() {
		var checkbox_lable = document.querySelector('[for="switch-status"]');
		
		if (this.checked) {	
			this.value='1';
			checkbox_lable.innerText = <?php echo $text_enabled; ?>;
		} else {
			this.value='0';
			checkbox_lable.innerText = <?php echo $text_disabled; ?>;
		}
	})
}
</script>

 

 

 

спасибо. нашел небольшую проблемку, не хватало ($product['status'])

спасибо огромное!!!

Змінено користувачем mulka45
Надіслати
Поділитися на інших сайтах


1 час назад, zomo сказал:


<div class="input-group">						
  <div class="custom-control custom-switch">
  <?php if ($status) { ?>
    <input name="status" value="1" class="custom-control-input" type="checkbox" id="switch-status" checked>
    <label class="custom-control-label" for="switch-status"><?php echo $text_enabled; ?></label>
  <?php } else { ?>
    <input name="status" value="0" class="custom-control-input" type="checkbox" id="switch-status">
    <label class="custom-control-label" for="switch-status"><?php echo $text_disabled; ?></label>
  <?php } ?>
  </div>
</div>

 

Как то так ну и код js чтобы при переключении менялось value и надпись включено отключено

 



<script>
var checkbox = document.getElementById('switch-status');

if (checkbox != null) {
	checkbox.addEventListener('change', function() {
		var checkbox_lable = document.querySelector('[for="switch-status"]');
		
		if (this.checked) {	
			this.value='1';
			checkbox_lable.innerText = <?php echo $text_enabled; ?>;
		} else {
			this.value='0';
			checkbox_lable.innerText = <?php echo $text_disabled; ?>;
		}
	})
}
</script>

 

 

и скрипт как то не правильно отрабатывает. текст при переключении все равно не меняется. и нажимая на любой, переключается только первый. подозреваю что нужно куда то прописать в коде <?=$product['product_id']?>, только подскажите куда))

Змінено користувачем mulka45
Надіслати
Поділитися на інших сайтах


input со статусов у вас один или их много?

 

измените 

var checkbox = document.getElementById('switch-status');

на

var checkbox = document.getElementById('ID переключателя');

Надіслати
Поділитися на інших сайтах

19 минут назад, zomo сказал:

input со статусов у вас один или их много?

 

измените 

var checkbox = document.getElementById('switch-status');

на

var checkbox = document.getElementById('ID переключателя');

да, это страница где выводятся товары в админке

не помогло. во первых не сохраняется положение переключателя, во вторых не меняется текст "вкл/выкл". что то делаю не так?

Надіслати
Поділитися на інших сайтах


11 минут назад, Tobolskiy сказал:

да, это страница где выводятся товары в админке

не помогло. во первых не сохраняется положение переключателя, во вторых не меняется текст "вкл/выкл". что то делаю не так?

Пришлите доступы в личку посмотрим

Надіслати
Поділитися на інших сайтах

Только что, chukcha сказал:

что? нет никаких плагинов?


 

Есть наверное, но а смысл если в бустрапе есть такая функция по молчанию...

Надіслати
Поділитися на інших сайтах

33 минуты назад, zomo сказал:

input со статусов у вас один или их много?

 

измените 

var checkbox = document.getElementById('switch-status');

на

var checkbox = document.getElementById('ID переключателя');

var checkbox = document.getElementById('switch-status<?=$product['product_id']?>');

так не будет работать?

Надіслати
Поділитися на інших сайтах


будет, вы в карточке товара в админки это вообще делаете?

Надіслати
Поділитися на інших сайтах

3 минуты назад, Tobolskiy сказал:

пытаюсь это сделать уже и так в нештатном модуле)) так что... к сожалению нет

Пишите в личку, тогда по другому все решается

Надіслати
Поділитися на інших сайтах

11 минут назад, zomo сказал:

будет, вы в карточке товара в админки это вообще делаете?

 

это страница где выводится много товаров в админке.

проверил но не работает)) как то экранировать нужно наверно

Надіслати
Поділитися на інших сайтах


<style>
label.switcher input[type="checkbox"] {display:none}
label.switcher input[type="checkbox"] + span {position:relative;display:inline-block;vertical-align:middle;width:36px;height:17px;margin:0 5px 0 0;background:#ccc;border:solid 1px #999;border-radius:10px;box-shadow:inset 0 1px 2px #999;cursor:pointer;transition:all ease-in-out .2s;}
label.switcher input[type="checkbox"]:checked + span {background:#8fbb6c;border:solid 1px #7da35e;}
label.switcher input[type="checkbox"]:checked + span span {right:0;left:auto}
label.switcher span span{position:absolute;background:white;height:17px;width:17px;display:inlaine-box;left:0;top:-1px;border-radius:50%}
</style>

<label class="switcher" title=""><input value="" type="checkbox"><span><span></span></span></label>

 

Надіслати
Поділитися на інших сайтах

6 минут назад, chukcha сказал:

<style>
label.switcher input[type="checkbox"] {display:none}
label.switcher input[type="checkbox"] + span {position:relative;display:inline-block;vertical-align:middle;width:36px;height:17px;margin:0 5px 0 0;background:#ccc;border:solid 1px #999;border-radius:10px;box-shadow:inset 0 1px 2px #999;cursor:pointer;transition:all ease-in-out .2s;}
label.switcher input[type="checkbox"]:checked + span {background:#8fbb6c;border:solid 1px #7da35e;}
label.switcher input[type="checkbox"]:checked + span span {right:0;left:auto}
label.switcher span span{position:absolute;background:white;height:17px;width:17px;display:inlaine-box;left:0;top:-1px;border-radius:50%}
</style>

<label class="switcher" title=""><input value="" type="checkbox"><span><span></span></span></label>

 

 

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

Надіслати
Поділитися на інших сайтах


так он корректно работает
только обработчик на onchange

$('label.switcher input[type=checkbox]').change(function(){
	var elem = $(this);
	$.ajax({
		url:'',
		method:'POST',
		data:[],
		success:function(html){
			elem.closest('label').attr('title',html)
		}
});
});

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.