проблема с формой
здравствуйте, товарищи
никак не могу сделать онлайн калькулятор для сайта. код, который вроде должен работать, как всегда работать не хочет. что-то, видимо, делаю не так вот код https://jsfiddle.net/schel4ok/p9d1p00t/ Я хочу, чтобы по умолчанию части формы .standard_sizes и .special_sizes были спрятаны и появлялись только при нажатии на соответствующий селектор. На jsfiddle вообще ничего не работает, выкладываю просто для удобства представления кода. У меня на локалке работает частично. При нажатии на любой из вариантов radio всегда отображается вариант standard Подскажите, пожалуйста, что не так. |
schel4ok,
<!DOCTYPE html>
<html>
<head>
<title>Doors</title>
<style>
form#calculator {
.form-group {position: relative; display:block; width: 50%;
> input.radio {height:13px; margin:6px 0 0 3px; width:13px;}
> label.radio {clear:both; margin:-1.75em 0 0 25px; padding:4px 0 5px; width:90%;}
> select {width:95px;}
> input.text {position: relative; }
> label.text {position: relative; padding: 0px; margin: 0px;}
}
}
.standard_sizes, .special_sizes {display:none;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function () {
$(".radio").change(function () {
if ($(this).val() == 'standard') {
$('#log').html("Новый текст " + $(this).val());
$('.standard_sizes').show();
$('.special_sizes').hide();
}
else {
$('#log').html("Новый текст " + $(this).val());
$('.special_sizes').show();
$('.standard_sizes').hide();
}
});
});
</script>
</head>
<body>
<form role="form" class="" id="calculator" action="" method='post' enctype="multipart/form-data">
<div class="form-group pull-left" id="door_size_radio"><h4>Размер дверной коробки (в миллиметрах)</h4>
<input type="radio" value="standard" name="door_size_radio" class="radio">
<label for="door_size_radio" class="radio">Стандартный</label>
<input type="radio" value="special" name="door_size_radio" class="radio">
<label for="door_size_radio" class="radio">Ввести размер</label>
</div>
<div class="form-group pull-right standard_sizes" id="door_size_standard"><h4>Стандартные размеры дверной коробки</h4>
<select class="select" name="door_size_standard">
<option value="1" selected="selected">585х1880</option>
<option value="2" >685x1880</option>
<option value="3" >685x1980</option>
<option value="4" >685x2080</option>
<option value="5" >685x2180</option>
<option value="6" >785x1880</option>
<option value="7" >785x1980</option>
<option value="8" >785x2080</option>
<option value="9" >785x2180</option>
</select>
</div>
<div class="form-group pull-right special_sizes" id="door_size_special"><h4>Ввести свои размеры дверной коробки</h4>
<label for="door_size_b" class="text">Ширина, мм</label>
<input name="door_size_b" type="text" class="text">
<label for="door_size_h" class="text">Высота, мм</label>
<input name="door_size_h" type="text" class="text">
</div>
<div class="form-group">
<input id="name" name="name" type="text" class="form-control" required>
<label for="name">Ваше имя *</label>
</div>
<div class="form-group">
<input id="phone" name="phone" type="tel" class="form-control" required>
<label for="phone">Номер телефона *</label>
</div>
<div class="form-group">
<input id="time" name="time" type="text" class="form-control" required>
<label for="time">Желательное время звонка</label>
</div>
<div class="form-group">
<input id="email" name="email" type="email" class="form-control" required>
<label for="email">Адрес электронной почты *</label>
</div>
<div class="form-group">
<textarea id="message" name="phone" class="form-control" required></textarea>
<label for="message">Сообщение *</label>
</div>
<div class="footer">
<button type="submit" class="btn btn-primary pull-right">Отправить</button>
</div>
<div id="log"></div>
</form>
</body>
</html>
|
спасибо! так работает
|
еще один вопрос
не получается сделать так, чтобы при нажатии на любой элемент формы сразу происходил перерасчет значения
<!DOCTYPE html>
<html>
<head>
<title>Doors</title>
<style>
form.calculator {
.form-group {
> input.radio {height:13px; margin:6px 0 0 3px; width:13px;}
> label {padding-left: 15px;}
> label.radio {margin: -23px 0 0 25px; padding:4px 0 5px; right: 0; .transition (none); color: #999;}
> input.radio:focus + label {border-color: #357EBD; background: none; padding: 4px 0 5px; text-transform: none; font-size: 100%; font-weight: bold; color: @link-color;}
> select {width:95px;}
}
.special_sizes {display:none;}
.result {border: 1px solid @link-color;}
@media (max-width: @screen-sm) {
.form-group {width: 100%;}
}
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function () {
function calculation() {
var BasePrice = $("select option:selected").attr('data-price'); //базовая стоимость за дверь стандартного размера 685х1880 с прозрачным стеклом
var DerevoPrice = $("input[name*='korobka']").attr('data-price');
var GlassPrice = $("input[name*='glass']").attr('data-price');
var PetliPrice = $("input[name*='petli']").attr('data-price');
var DekorPrice = $("input[name*='dekor']").attr('data-price');
var total = BasePrice + DerevoPrice + GlassPrice + PetliPrice + DekorPrice;
$('.result > .price').html($(total));
};
$("input[name*='door_size_radio']").change(function () {
if ($(this).val() == 'standard') {
$('.standard_sizes').show();
$('.special_sizes').hide();
}
else {
$('.special_sizes').show();
$('.standard_sizes').hide();
}
});
//отслеживаем изменение данных
$('.calculator').on('click keyup', calculation);
});
</script>
</head>
<body><form role="form" class="go-right calculator" action="" method='post' enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group door_size_radio col-xs-12 col-sm-6" style="margin-bottom:67px;"><h4>Размер дверной коробки (в миллиметрах)</h4>
<input type="radio" value="standard" name="door_size_radio" class="radio">
<label for="door_size_radio" class="radio">Стандартный</label>
<input type="radio" value="special" name="door_size_radio" class="radio">
<label for="door_size_radio" class="radio">Ввести размер</label>
</div>
<div class="form-group standard_sizes col-xs-12 col-sm-6" style="margin-bottom:94.5px;"><h4>Стандартные размеры дверной коробки</h4>
<select class="select door_size_standard" name="door_size_standard">
<option value="1" data-price="7500" selected="selected">585х1880</option>
<option value="2" data-price="6500">685x1880</option>
<option value="3" data-price="7500">685x1980</option>
<option value="4" data-price="7500">685x2080</option>
<option value="5" data-price="7500">685x2180</option>
<option value="6" data-price="7500">785x1880</option>
<option value="7" data-price="7500">785x1980</option>
<option value="8" data-price="7500">785x2080</option>
<option value="9" data-price="8500">785x2180</option>
</select>
</div>
<div class="form-group special_sizes col-xs-12 col-sm-6"><h4>Ввести свои размеры дверной коробки</h4> </div>
<div class="form-group special_sizes col-xs-12 col-sm-6">
<input name="door_size_b" type="text" class="form-control" required>
<label for="door_size_b">Ширина, мм</label>
</div>
<div class="form-group special_sizes col-xs-12 col-sm-6">
<input name="door_size_h" type="text" class="form-control" required>
<label for="door_size_h">Высота, мм</label>
</div>
<div class="row" style="width:100%;"></div>
<div class="form-group glass col-xs-12 col-sm-6"><h4>Стекло</h4>
<input type="radio" value="clear" data-price="1" name="glass" class="radio">
<label for="glass" class="radio">Прозрачное (стандарт)</label>
<input type="radio" value="matelux" data-price="2" name="glass" class="radio">
<label for="glass" class="radio">Матовое</label>
<input type="radio" value="bronza" data-price="3" name="glass" class="radio">
<label for="glass" class="radio">Бронза</label>
<input type="radio" value="bronza_matelux" data-price="4" name="glass" class="radio">
<label for="glass" class="radio">Матовая бронза</label>
</div>
<div class="form-group korobka col-xs-12 col-sm-6"><h4>Материал дверной коробки</h4>
<input type="radio" value="lipa" data-price="1" name="korobka" class="radio">
<label for="korobka" class="radio">Липа (стандарт)</label>
<input type="radio" value="listvennica" data-price="2" name="korobka" class="radio">
<label for="korobka" class="radio">Лиственница</label>
<input type="radio" value="buk" data-price="3" name="korobka" class="radio">
<label for="korobka" class="radio">Бук</label>
<input type="radio" value="dub" data-price="4" name="korobka" class="radio">
<label for="korobka" class="radio">Дуб</label>
</div>
<div class="form-group petli col-xs-12 col-sm-6"><h4>Петли</h4>
<input type="radio" value="chrom" data-price="1" name="petli" class="radio">
<label for="petli" class="radio">Хром (стандарт)</label>
<input type="radio" value="bronza" data-price="2" name="petli" class="radio">
<label for="petli" class="radio">Бронза</label>
<input type="radio" value="gold" data-price="3" name="petli" class="radio">
<label for="petli" class="radio">Золото</label>
</div>
<div class="form-group dekor col-xs-12 col-sm-6"><h4>Декор</h4>
<input type="radio" value="no" data-price="0" name="dekor" class="radio">
<label for="dekor" class="radio">Нет</label>
<input type="radio" value="pesok" data-price="1" name="dekor" class="radio">
<label for="dekor" class="radio">Пескоструйный рисунок</label>
<input type="radio" value="foto" data-price="2" name="dekor" class="radio">
<label for="dekor" class="radio">Фотопечать</label>
<input type="radio" value="fusing" data-price="3" name="dekor" class="radio">
<label for="dekor" class="radio">Пескоструйный рисунок с фьюзингом</label>
</div>
<div class="result col-xs-12 col-sm-6">
Размер дверной коробки (в миллиметрах): <div class="razmer"></div><br />
Стекло: <div class="glass"></div><br />
Материал дверной коробки: <div class="derevo"></div><br />
Петли: <div class="petli"></div><br />
Декор: <div class="dekor"></div><br />
<br />
Стоимость двери: <div class="price"></div>
</div>
<div class="form-group col-xs-12 col-sm-6">
<input id="name" name="name" type="text" class="form-control" required>
<label for="name">Ваше имя *</label>
</div>
<div class="form-group col-xs-12 col-sm-6">
<input id="phone" name="phone" type="tel" class="form-control" required>
<label for="phone">Номер телефона *</label>
</div>
<div class="form-group col-xs-12 col-sm-6">
<input id="email" name="email" type="email" class="form-control" required>
<label for="email">Адрес электронной почты *</label>
</div>
<div class="form-group col-xs-12 col-sm-6">
<textarea id="message" name="phone" class="form-control"></textarea>
<label for="message">Комментарии</label>
</div>
<div class="footer col-xs-12 col-sm-6">
<button type="submit" class="btn btn-primary pull-right">Отправить</button>
</div>
</form>
</body>
</html>
|
| Часовой пояс GMT +3, время: 12:54. |