Может в форме чего я не та прописал? <div class="form-group [[!+error.firma:notempty=`has-error`]]">
<label for="firma" class="col-lg-4 control-label">Фирма</label>
<div class="col-lg-8">
<select id="select" name="firma" class="form-control">
<option value="[[!+firma]]">Выберите фирму...</option>
<option value="Sony" [[!+fi.firma:FormItIsSelected=Sony
]]>Sony</option>
<option value="BBK" [[!+fi.firma:FormItIsSelected=BBK
]]>BBK</option>
<option value="Oursson" [[!+fi.firma:FormItIsSelected=Oursson
]]>Oursson</option>
<option value="Toshiba" [[!+fi.firma:FormItIsSelected=Toshiba
]]>Toshiba</option>
<option value="Другое" [[!+fi.firma:FormItIsSelected=Другое
]]>Другое</option>
</select>
<input type="text" value="[[!+firma]]" class="form-control" id="custom" placeholder="Введите свое значение" name="firma">
</div>
</div>
последний бери в этом да может только input
$(document).ready(function() { var $select = $('#select'); var $custom = $('#custom'); var $customValue = 'Другое';
$select.on('change', function() {
$name = $(this).val();
if ($(this).val() == $customValue) {
$('#custom').show();
}
else { $('#custom').hide(); } });
$('#form').on('submit', function() { if ( ($select.val() == $customValue) && ($custom.val() != '') ) { $select.val() = $custom.val(); } else{ $select.val() = $name; } }); }); В этом коде в плане отображения/скрытия инпута все ОК. Но отправляет только из инпута значение. Здесь нужен скрытый инпут или все работает в связке select/input type «text»
нет теперь не надо код ниже
$(document).ready(function() { var $select = $('#select'), $custom = $('#custom'), $customValue = 'Другое', $name = $('#select').val();
$select.on('change', function() {
if ($name == $customValue) {
$('#custom').show();
}
else { $('#custom').hide(); } });
$('#form').on('submit', function() { if ( ($select.val() == $customValue) && ($custom.val() != '') ) { $select.val() = $custom.val(); } else{ $select.val() = $name; } }); });
$(document).ready(function() { var $select = $('#select'); var $custom = $('#custom'); var $customValue = 'Другое';
$select.on('change', function() {
$name = $(this).val();
if ($this).val() == $customValue) {
$('#custom').show();
}
else { $('#custom').hide(); } });
$('#form').on('submit', function() { if ( ($select.val() == $customValue) && ($custom.val() != '') ) { $select.val() = $custom.val(); } else{ $select.val() = $name; } }); });
А куда добавить show?
чтобы появлялся добавьте show, а изначально спрячьте
$(document).ready(function() { var $select = $('#select'); var $custom = $('#custom'); var $customValue = 'Другое';
$select.on('change', function() {
$name = $(this).val(); if ( ($this).val() == $customValue) && ($custom.val() != '') ) { $(this).val() = $custom.val(); } else { $(this).val() = $name; } }); });
А так все равно из инпута значение берет. При любом значении в селекте. Мне нужно чтобы при значении селекта «Другое» — появлялся инпут для ввода этого самого своего значения. Значит и отправляться он должен. Иначе — отправляются значения из селекта и инпут не появляется))