Результаты формы
Доброго времени суток!
На сайте при добавлении товара в корзину справа отображается форма для ввода информации с 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, время: 20:32. |