Результаты формы
Доброго времени суток!
На сайте при добавлении товара в корзину справа отображается форма для ввода информации с 2 полями с выпадающим списком.
<div class="form-body">
<div class="place_sections_block">
<div class="row">
<div class="col-md-12">
<div class="form-group animated-labels input-filed">
<label for="POPUP_SERVICE">Раздел</label>
<div class="input">
<select name="" class="place_sections form-control">
<?foreach ($sections as $section){?>
<option value="<?=$section['ID']?>"><?=$section['NAME']?></option>
<?}?>
</select>
</div>
</div>
</div>
</div>
</div>
<?$counter = 0;
foreach ($sections as $section){?>
<div class="row place_elements<?=++$counter==1?' active':''?>" id="placeElements<?=$section['ID']?>">
<div class="col-md-12">
<div class="form-group animated-labels input-filed">
<label for="POPUP_SERVICE">Место</label>
<div class="input">
<select class="form-control">
<?foreach ($section['elements'] as $element){?>
<option value="<?=$element['ID']?>"><?=$element['NAME']?></option>
<?}?>
</select>
</div>
</div>
</div>
</div>
<?}?>
</div>
Далее, при нажатии на кнопку "Выбрать" данная форма закрывается и информация передается в корзину.
<div class="form-footer clearfix">
<span class="btn btn-default placeChoose">Выбрать</span>
</div>
$(document).ready(function(){
$('.place_sections').on('change', function(){
var val = $(this).val();
$('.place_elements.active').removeClass('active');
$('#placeElements' + val).addClass('active');
});
$('.placeChoose').on('click', function(){
var val = $('.place_elements.active select').val(),
name = $('.place_elements.active select option:selected').html();
$.ajax({
method: 'post',
url: '/ajax/actions.php',
data: {action: 'setPlace', place_id: val},
success: function(data){
var result = JSON.parse(data);
if (result){
whenPlaceChoosen(name); //custom.js
}
}
})
});
});
Вместо 2 полей необходимо сделать обычное поле для заполнения. Делаю так (т.е. второе поле убираю)
<div class="place_sections_block">
<div class="row">
<div class="col-md-12">
<div class="form-group animated-labels input-filed">
<label for="POPUP_SERVICE">Город</label>
<div class="input">
<input type="" name="" class="place_sections form-control">
</div>
</div>
</div>
</div>
</div>
После чего, при нажатии на "Выбрать" форма не закрывается. Подскажите, пожалуйста, что делаю не так? Спасибо. |
_marisha,
может надо поменять
var val = $('.place_elements.active select').val(),
name = $('.place_elements.active select option:selected').html();
на
var val = $('.place_elements.active .place_sections').val(),
name = $('.place_elements.active .place_sections').attr('name');
|
рони, спасибо что откликнулись :)
Если сделать так:
$(document).ready(function(){
$('.place_sections').on('change', function(){
var val = $(this).val();
$('.place_elements.active').removeClass('active');
$('#placeElements' + val).addClass('active');
});
$('.placeChoose').on('click', function(){
var val = $('.place_elements.active .place_sections').val(),
name = $('.place_elements.active .place_sections').html();
$.ajax({
method: 'post',
url: '/ajax/actions.php',
data: {action: 'setPlace', place_id: val},
success: function(data){
var result = JSON.parse(data);
if (result){
whenPlaceChoosen(name); //custom.js
}
}
})
});
});
Тогда в консоли ошибка: Uncaught SyntaxError: Unexpected end of JSON input |
Цитата:
|
Прилагаю код файла /ajax/actions.php
if (isset($_POST['action'])){
switch($_POST['action']){
case 'setfavplace':
if (isset($_POST['place_id']) && intval($_POST['place_id'])){
FavPlaces::setFavs(intval($_POST['place_id']), 'UF_FAV_PLACE');
}
break;
case 'getfavplace':
echo json_encode(FavPlaces::getFavs());
break;
case 'setPlace':
if (isset($_POST['place_id']) && intval($_POST['place_id'])){
echo json_encode(FavPlaces::setPlace(intval($_POST['place_id'])));
}
break;
case 'getPlace':
echo json_encode(FavPlaces::getPlace());
break;
}
}
В консоли (вкладка Network): 1) при открытии формы: id: 211 type: chooseplace data-trigger: {"class":"btn btn-default pull-right choose_place wplace_choose ch_active","data-event":"jqm","data-param-id":"211","data-param-type":"chooseplace","data-name":"callback1"} 2) при нажатии на "Выбрать": action: setPlace |
Цитата:
|
Цитата:
Сделано так:
var val = $('.place_elements.active .place_sections').val(),
name = $('.place_elements.active .place_sections').attr('name');
Но в консоли ошибка "Uncaught SyntaxError: Unexpected end of JSON input" |
_marisha,
var result = JSON.parse(data);, это обычно не нужно!!! логика немного нарушена, из селектора вы брали код код города и название, как вы ходите получить тоже самое из инпута? |
Цитата:
Необходимо вместо поля "Место" сделать поле для ввода "Город" ;) Вывожу в консоль:
var val = $('.place_elements.active .place_sections').val(),
name = $('.place_elements.active .place_sections').attr('name');
console.log(val);
Результат undefined |
_marisha,
может нет .place_elements.active ? <div class="row place_elements<?=++$counter==1?' active':''?>" id="placeElements<?=$section['ID']?>"> |
| Часовой пояс GMT +3, время: 15:40. |