Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не показывает выделенные (https://javascript.ru/forum/misc/54000-ne-pokazyvaet-vydelennye.html)

Nelzz 27.02.2015 12:31

Не показывает выделенные
 
Опят другая проблема. Есть страница редактирование.

Селект #country должен вернут значение из бд.

$( document ).ready(function() {
  
  $("#city").select2();

  var $ajax = $("#country");

$('#country').change(function(){
    var country = $('#country').val();
     $('#country_id').val(country);

  var formatProduct = function(data){
     return data.city;
  }
  $("#city").select2({
    ajax: {
      url: "../../ajaxdata",
      dataType: 'json',
        data: function (params) {
        return {
          country_id: country, // search term
          term: params.term
        };
      },
       processResults: function (data, params) {
        return {
          results: data.items,
        };
      },
      cache: true,
    },
      templateResult: formatProduct,
      templateSelection: formatProduct,
  });

  });


  function formatRepo (repo) {
    if (repo.loading) return repo.name;

    var markup = repo.name;

    return markup;
  }

  function formatRepoSelection (repo) {
    return repo.name || repo.name;
  }


  $ajax.select2({
    ajax: {
      url: "../../ajaxdata",
      dataType: 'json',
      delay: 250,
      data: function (params) {
        return {
          country: params.term, 
          page: params.page
        };
      },
      processResults: function (data, params) {

        params.page = params.page || 1;

        return {
          results: data.items,
          pagination: {
            more: (params.page * 30) < data.total_count
          }
        };
      },
      cache: true,
    },

    templateResult: formatRepo,
    templateSelection: formatRepoSelection,
     
  });


});


именно мешает templateSelection, если его убрать все заработает, только после выбора значение показывает пустое поля (только визуально).

Нужно чтобы он вернул и значение из бд и показывал выбраненные значение.

Как решить? Кто нибудь поможет или ткните куда нить.

laimas 27.02.2015 12:47

Давайте начнем с этого:

var $ajax = $("#country"); - хорошо, объект кеширован, но тут же:

$('#country').change(function(){
var country = $('#country').val();

Как это понимать? И почему запрос $ajax.select2 требуется дважды, неужели нельзя изменением параметра запроса дать понять серверу что запрашивается?

Nelzz 27.02.2015 13:16

Цитата:

Сообщение от laimas (Сообщение 358772)
Давайте начнем с этого:

var $ajax = $("#country"); - хорошо, объект кеширован, но тут же:

$('#country').change(function(){
var country = $('#country').val();

Как это понимать? И почему запрос $ajax.select2 требуется дважды, неужели нельзя изменением параметра запроса дать понять серверу что запрашивается?

Вся функция выбираешь страну и по нему город.

var country = $('#country').val();
 $('#country_id').val(country);


При выборе повторно #country другую страну он туда же пишет две значение, первый и вторую, мне нужен только одно, по этому делаю на скрытом инпуте.

все не так просто как кажется )

Вес листинг https://gist.github.com/Asetss/e1700a070990d8a766cd

laimas 27.02.2015 13:33

Если var $ajax = $("#country"), то тогда

$ajax.change(function(){
var country = this.value; //собственно этого и не надо, можно сразу подставить this.value в параметр запроса, без промежуточной country.

Что касается остального, то у вас вывод связанных списков, и это еще не повод на каждый из них писать отдельный запрос. Списки то ведь разные уже потому, что это разные сущности в базе, и на клиенте они должны тоже отличаться. А если они отличаются, значит и различны параметры запроса, значит и значение какого (или какой список) возвращается клиенту тоже известно.

Впрочем, если вы убеждены, что поступаете верно, то я не имею вопросов.

Nelzz 27.02.2015 13:49

Цитата:

Сообщение от laimas (Сообщение 358787)
Если var $ajax = $("#country"), то тогда

$ajax.change(function(){
var country = this.value; //собственно этого и не надо, можно сразу подставить this.value в параметр запроса, без промежуточной country.

Что касается остального, то у вас вывод связанных списков, и это еще не повод на каждый из них писать отдельный запрос. Списки то ведь разные уже потому, что это разные сущности в базе, и на клиенте они должны тоже отличаться. А если они отличаются, значит и различны параметры запроса, значит и значение какого (или какой список) возвращается клиенту тоже известно.

Впрочем, если вы убеждены, что поступаете верно, то я не имею вопросов.

Это код не о чем не говорит.

Вес view редактирование

https://gist.github.com/Asetss/ba6a5e5e1ecbb3609c71 это фрейм ларавел

заметьте строку https://gist.github.com/Asetss/ba6a5...file1-php-L216

Country::getCountryArray($contact->cont_country) вернет массив
само значение $contact->cont_country

и на #сity тоже самое только там поиска нету,по этому пашет.

laimas 28.02.2015 06:58

Ну и на что выбор пал - git или все таки свое?

Nelzz 28.02.2015 07:26

Цитата:

Сообщение от laimas (Сообщение 358957)
Ну и на что выбор пал - git или все таки свое?

Я пока даже не решил ничего. Не знаю что теперь делать :help:

не большой такой косяк, бесит уже.



1. Просмотр
2. Редактирование

сам значение он выбирает.
В редактировании 1 селекте должен быть украина и все :]

laimas 28.02.2015 07:46

Страна Украина
Город Донецк

это как отображение результата выбора по двум спискам?

Nelzz 28.02.2015 08:06

Цитата:

Сообщение от laimas (Сообщение 358959)
Страна Украина
Город Донецк

это как отображение результата выбора по двум спискам?

Да, только в селекте :)

laimas 28.02.2015 08:11

только в селекте

Это как понять? Наверное тогда каждый отображает свое, а ваш ответ можно трактовать как в одном.

Первый список (страна) также добавляется на страницу динамически или же он есть в наличии при открытии страницы (что логично, если некие обстоятельства не позволяют этого)?


Часовой пояс GMT +3, время: 17:01.