Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2019, 09:10
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

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

После чего, при нажатии на "Выбрать" форма не закрывается.
Подскажите, пожалуйста, что делаю не так? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2019, 09:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

_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');
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2019, 10:15
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

рони, спасибо что откликнулись
Если сделать так:
$(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
Ответить с цитированием
  #4 (permalink)  
Старый 12.08.2019, 10:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от _marisha
name = $('.place_elements.active .place_sections').html();
???
Ответить с цитированием
  #5 (permalink)  
Старый 12.08.2019, 10:32
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Прилагаю код файла /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

Последний раз редактировалось _marisha, 12.08.2019 в 10:35.
Ответить с цитированием
  #6 (permalink)  
Старый 12.08.2019, 10:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от _marisha
Unexpected end of JSON input
Значит невалидный JSON получен от сервера.
Ответить с цитированием
  #7 (permalink)  
Старый 12.08.2019, 10:34
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от рони Посмотреть сообщение
???
У меня опечатка...
Сделано так:
var val = $('.place_elements.active .place_sections').val(),
name = $('.place_elements.active .place_sections').attr('name');

Но в консоли ошибка "Uncaught SyntaxError: Unexpected end of JSON input"
Ответить с цитированием
  #8 (permalink)  
Старый 12.08.2019, 10:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

_marisha,
var result = JSON.parse(data);, это обычно не нужно!!!
логика немного нарушена, из селектора вы брали код код города и название, как вы ходите получить тоже самое из инпута?
Ответить с цитированием
  #9 (permalink)  
Старый 12.08.2019, 11:12
Профессор
Отправить личное сообщение для _marisha Посмотреть профиль Найти все сообщения от _marisha
 
Регистрация: 18.05.2018
Сообщений: 170

Сообщение от рони Посмотреть сообщение
_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, 12.08.2019 в 11:15.
Ответить с цитированием
  #10 (permalink)  
Старый 12.08.2019, 11:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

_marisha,
может нет .place_elements.active ?
<div class="row place_elements<?=++$counter==1?' active':''?>" id="placeElements<?=$section['ID']?>">
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Валидация веб формы giovanni Events/DOM/Window 3 01.09.2017 15:49
ajax передача отдельной переменной и формы dmitriy94 AJAX и COMET 16 16.01.2015 23:33
Четыре одинаковые формы на странице с разной версткой varanika jQuery 2 19.10.2014 13:14
проверка формы не работает в ie begelme Javascript под браузер 6 13.08.2013 01:00
Результаты проверки сервером формы ekkl jQuery 3 30.01.2010 14:29