Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переключение значений select в зависимости от значения класса div (https://javascript.ru/forum/dom-window/47328-pereklyuchenie-znachenijj-select-v-zavisimosti-ot-znacheniya-klassa-div.html)

golopogos 19.05.2014 13:35

Переключение значений select в зависимости от значения класса div
 
Здравствуйте, затрудняюсь реализовать сам. Прошу вашей помощи.

Есть два блока div:

<li id="flag1" class="btn">
<div class="iradio checked"></div>
</li>
<li id="flag2" class="btn">
<div class="iradio"></div>
</li>


в которых попеременно происходит обмен значений классов div: .iradio.checked и .iradio

Нужно как то отслеживать этот обмен классами и скриптом присваивать значение полю select - Стандарт или Информ. Код меню ниже:

<select class='k_select' id='k_input_field_30_4700' value='Стандарт' >
	<option value=''></option>
        <option selected value='Стандарт'>Стандарт</option>
        <option value='Информ'>Информ</option>
</select>

рони 19.05.2014 14:44

Цитата:

Сообщение от golopogos
в которых попеременно происходит обмен значений классов

а меняет классы какой код?

golopogos 19.05.2014 15:47

Это ссылка на скрипт, вставляется в шапку:
<script src='//yagool.ru/blurb/icheck.js'></script>


Сам html код:

<li id="flag1" class="btn">
<div class="iradio checked"></div>
</li>
<li id="flag2" class="btn">
<div class="iradio"></div>
</li>

<select class='k_select' id='k_input_field_30_4700' value='Стандарт' >
	<option value=''></option>
        <option selected value='Стандарт'>Стандарт</option>
        <option value='Информ'>Информ</option>
</select>


Скрипт обработчик:

<script>$(document).ready(function(){$(".pricePlans input").each(function(){var a=$(this),b=a.next(),c=b.text();b.remove();a.iCheck({radioClass:"iradio",insert:'<div class="icheck-icon"></div>'+c})})});</script>

рони 19.05.2014 16:07

golopogos,
пока информации нуль - если вы используите плагин https://github.com/fronteed/iCheck - читайте документацию там всё есть -- а пока вы демонстрируите куски кода никак несвязанные с друг другом -- сделайте макет тут или в песочнице.

golopogos 19.05.2014 16:23

Ну а если откинуть все скрипты и т.д. И взять за основу первый пост?..

рони 19.05.2014 16:38

golopogos,
так сам там класс то появится то исчезнет?

рони 19.05.2014 18:28

golopogos,
:cray:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script src="http://fronteed.com/iCheck/icheck.js?v=1.0.1"></script>
 <link rel="stylesheet" type="text/css" href="http://fronteed.com/iCheck/demo/css/normalize.css">
  <style type="text/css">
/* green */
.iradio_flat-green {
    display: inline-block;
    *display: inline;
    vertical-align: middle;
    margin: 0;
    padding: 0;
    width: 20px;
    height: 20px;
    background: url(http://fronteed.com/iCheck/skins/square/green.png) no-repeat;
    border: none;
    cursor: pointer;
}

.iradio_flat-green {
    background-position: -0px 0;
}
    .iradio_flat-green.checked {
        background-position: -48px 0;
    }
    .iradio_flat-green.disabled {
        background-position: -132px 0;
        cursor: default;
    }
    .iradio_flat-green.checked.disabled {
        background-position: -154px 0;
    }


  </style>

</head>

<body>
 <label for="baz[1]">Стандарт</label>
<input type="radio" name="quux[2]" id="baz[1]" checked data-info="Стандарт">

<label for="baz[2]">Информ</label>
<input type="radio" name="quux[2]" id="baz[2]" data-info="Информ">

<select class='k_select' id='k_input_field_30_4700' value='Стандарт' >
	<option value=''></option>
        <option selected value='Стандарт'>Стандарт</option>
        <option value='Информ'>Информ</option>
</select>
<script>
	$('input').iCheck({radioClass: "iradio_flat-green"});
	$('input').on('ifChecked', function(event)
	  {
	    $('#k_input_field_30_4700').val($(this).data('info'));
	  }
	);
</script>
</body>

</html>

golopogos 19.05.2014 20:46

Не работает)

Посмотрите, собрал макет на Фидле:

http://jsfiddle.net/hdBRX/2/

рони 19.05.2014 20:53

golopogos,
а где там код из 7 поста?

golopogos 20.05.2014 08:23

Большое Вам спасибо, но представленный Вами код не совсем подходит. И как его приспособить - ума не приложу) Макет на Фидле - это то что необходимо подправить. Выложил для наглядности. Функцию чекбоксов выполняют панели выбора тарифа.

рони 20.05.2014 09:41

golopogos,
1. выбор checked инпутов и selected селекта должны совпадать изначально строки 221 и 251
2. лучше пописать data инпуте чтоб не искать в h2 значение
или прописать value в самих инпутах тогда
тогда строка 195 будет
$('#k_input_field_30_4700').val(this.value);

3. если таких блоков много сами пропишите путь до ближайшего селекта вместо $('#k_input_field_30_4700'). строка 195
4 не грузите jquery несколько раз -- если выбрали в jsfiddle версию -- зачем грузить ещё свою -- также и на сайте одна версия и желательно новее, но это по желанию и работоспособности.

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script>
  <script src="http://fronteed.com/iCheck/icheck.js?v=1.0.1"></script>
  <style type='text/css'>
    div #plans,div #plans ul,div #plans ul li {
	margin: 0;
	padding: 0;
	list-style: none;
}

div.pricePlans:after {
	content: '';
	display: table;
	clear: both;
}

div.pricePlans {
	font-family: 'Open Sans', sans-serif;
	zoom: 1;
}

div.pricePlans {
	max-width: 600px;
	margin: 0 auto;
	padding-left: 15px;
}

div.pricePlans #plans .plan {
	background: #fff;
	float: left;
	width: 280px;
	text-align: center;
	border-radius: 5px;
	margin: 0 10px 10px 0;
	-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    box-shadow: 0 0 10px rgba(0,0,0,0.5);
}

.planContainer .title h2 {
	font-size: 1.8em;
	font-weight: 300;
	color: #3e4f6a;
	margin: 0;
	padding: .4em 0;
}

.planContainer .title h2.bestPlanTitle {
	background: #3e4f6a;
	background: -webkit-linear-gradient(top, #475975, #364761);
	background: -moz-linear-gradient(top, #475975, #364761);
	background: -o-linear-gradient(top, #475975, #364761);
	background: -ms-linear-gradient(top, #475975, #364761);
	background: linear-gradient(top, #475975, #364761);
	color: #fff;
	border-radius: 5px 5px 0 0;
}

.planContainer .price p {
	background: #3e4f6a !important;
	background: -webkit-linear-gradient(top, #475975, #364761);
	background: -moz-linear-gradient(top, #475975, #364761);
	background: -o-linear-gradient(top, #475975, #364761);
	background: -ms-linear-gradient(top, #475975, #364761);
	background: linear-gradient(top, #475975, #364761);
	color: #fff !important;
	font-size: 1.2em !important;
	font-weight: 700 !important;
	height: 2.2em !important;
	line-height: 2.0em !important;
	width: 257px !important;
	margin-left: 0 !important;
	padding: 4px;
}

.planContainer .price p.bestPlanPrice {
	background: #f7814d !important;
}

.planContainer .price p span {
	color: #8394ae !important;
}

.planContainer .options {
	margin-top: 4em !important;
}

.planContainer .options li {
	font-weight: 700 !important;
	color: #364762 !important;
	line-height: 2.0em !important;
}

.planContainer .options li span {
	font-weight: 600;
    font-size: 18px;
	color: #a00202;
	text-transform: uppercase;
	text-decoration: none;
	letter-spacing: 3px;
	line-height: 2.8em;
    display: inline-block;
}

.planContainer .btn a {
	text-transform: uppercase;
	text-decoration: none;
	color: #3e4f6a;
	font-weight: 700;
	letter-spacing: 3px;
	line-height: 2.8em;
	border: 2px solid #3e4f6a;
	display: inline-block;
	width: 250px;
	height: 2.4em;
	border-radius: 4px;
	margin: 1.5em 0 1.8em;
}

.planContainer .btn a.bestPlanButton {
	color: #fff;
	background: #f7814d;
	border: 2px solid #f7814d;
}

/* iCheck plugin Line skin, blue
----------------------------------- */
.iradio {
    position: relative;
    display: block;
    width: 80%;
	height: 2.8em;
	margin: 1.5em 0 1.8em;
    text-transform: uppercase;
    text-decoration: none;
    color: #3e4f6a;
    font-weight: 700;
    letter-spacing: 3px;
    line-height: 2.8em;
    display: inline-block;
    border: 2px solid #3e4f6a;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 4px;
    cursor: pointer;
}
   .iradio .icheck-icon {
        position: absolute;
        top: 50%;
        left: 13px;
        width: 13px;
        height: 11px;
        margin: -5px 0 0 0;
        padding: 0;
        overflow: hidden;
    }
   .iradio.hover {
		color: #f7804d;
        border: 2px solid #f7804d;
    }
    .iradio.checked {
        background: #f7804d;
		color: #ffffff;
		border: none;
    }
        .iradio.checked .icheck-icon {
            background-position: -15px 0;
        }
   .iradio.disabled {
        background: #ADD7F0;
        cursor: default;
    }
       .iradio.disabled .icheck-icon {
            background-position: -30px 0;
        }
    .iradio.checked.disabled {
        background: #ADD7F0;
    }
       .iradio.checked.disabled .icheck-icon {
            background-position: -45px 0;
        }
  </style>



<script type='text/javascript'>
$(window).load(function(){
$(document).ready(function(){$(".pricePlans input").each(function(){var a=$(this),b=a.next(),c=b.text();b.remove();a.iCheck({radioClass:"iradio",insert:''+c})
a.on('ifChecked', function(event)
	  {
	    $('#k_input_field_30_4700').val($('h2',$(this).parents('.planContainer')).text());
	  }
	)


})});
});

</script>


</head>
<body>
	<div class="pricePlans">
		<ul id="plans">
			<li class="plan">
				<ul class="planContainer">
					<li class="title"><h2>Стандарт</h2></li>
					<li class="price"><p>3'000 / месяц</p></li>
					<li>
						<ul class="options">
							<li>Добавление в базу <span>+</span></li>
							<li>СМС-рассылок <span>0</span></li>
						</ul>
					</li>
                    <li id="flag1" class="btn">
					<input id="tarif" name="iCheck" type="radio" checked>
					<a class="bestPlanButton" href="#"><label>Мой выбор</label></a>
					</li>
				</ul>
			</li>

			<li class="plan">
				<ul class="planContainer">
					<li class="title"><h2 class="bestPlanTitle">Информ</h2></li>
					<li class="price"><p class="bestPlanPrice">5'000 / месяц</p></li>
					<li>
						<ul class="options">
							<li>Добавление в базу <span>+</span></li>
							<li>СМС-рассылок <span>1</span></li>
						</ul>
					</li>
					<li id="flag2" class="btn">
					<input id="tarif" name="iCheck" type="radio" >
					<a class="bestPlanButton" href="#"><label>Мой выбор</label></a>
					</li>


				</ul>
			</li>

		</ul>
	</div>

	   <select class='k_select' id='k_input_field_30_4700' value='Стандарт' > <!-- Поле после отладки поле будет скрыто -->
	     <option value=''></option>
		 <option selected value='Стандарт'>Стандарт</option>
		 <option value='Информ'>Информ</option>
	   </select>

</body>
</html>

golopogos 20.05.2014 10:19

Вы гений!) Спасибо Вам огромное!..


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