Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 04.12.2018, 20:37
Интересующийся
Отправить личное сообщение для Gidpoiiohika Посмотреть профиль Найти все сообщения от Gidpoiiohika
 
Регистрация: 04.12.2018
Сообщений: 22

рони,
Спасибо Вам большое!
Ответить с цитированием
  #12 (permalink)  
Старый 05.12.2018, 11:51
Интересующийся
Отправить личное сообщение для Gidpoiiohika Посмотреть профиль Найти все сообщения от Gidpoiiohika
 
Регистрация: 04.12.2018
Сообщений: 22

рони,
А можно ещё пожалуйста один вопрос. Я уже почти к цели дошёл, сейчас вроде всё хорошо работает ну не так как нужно, сейчас попытаюсь объяснить!
Когда я нажимаю первый раз на кнопку добавить и не выбираю категорию и нажимаю второй раз добавить категорию и потом уже добавляю категорию то всё работает как нужно, то есть в первом селекте я выбираю категорию "Java" и втором селекте "Java" уже нету. Но когда я нажимаю на кнопку добавить категорию, выбираю категорию и ещё раз нажимаю на кнопку добавить категорию код уже не работает
div class='nested-fields'
  div class='field'
    = f.select :category_id, options_for_select(Category.all.map{|e| [e.name, e.id, { 'data-default_external_rate' => e.default_external_rate }]}, f.object.category_id),
    { prompt: "Select Category" },
    { class: "js-category-select" }
    = f.text_field :external_rate, { class: "js-external_rate",  label: 'Default External Rate' }
    = link_to_remove_association 'Remove Categories', f, class: 'btn btn-primary'
script 
  | $('.js-category-select').on('change', function(e) {
      var optionSelected = $("option:selected", this).data('default_external_rate');
      $(this).closest('.field').find('.js-external_rate').val(optionSelected)
    });
script 
  | var sel = $('select');
    sel.change(function(){
      var cVal = $(this).val();
      if(cVal !== ''){
        $('[value="' + cVal + '"]', sel).not(this).hide();
      } else {
        $('option',sel).show();
      }
    });

Вот когда я нажимаю сначала два раза добавить категорию а потом уже выбираю

потом я выбираю в категорию

А это когда я нажимаю добавить категорию, выбираю категорию, ещё раз нажимаю добавить категорию выбираю и уже код не работает, а мне как то нужно сделать что бы именно так работал и не могу понять как это сделать
Ответить с цитированием
  #13 (permalink)  
Старый 05.12.2018, 12:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Gidpoiiohika,
я не знаю формат в котором вы пишите код, не понимаю ваших обьяснений, возможно вам поможет делегирование.
уберите все change с селектов, и добавьте их родителю.
$('.js-category-select').on('change', function(e) заменить на
$('селектор_родителя').on('change' , '.js-category-select',function(e)

sel.change
на
$('селектор_родителя').on('change' , 'select',function(e)
Ответить с цитированием
  #14 (permalink)  
Старый 05.12.2018, 12:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от Gidpoiiohika
$('[value="' + cVal + '"]', sel).not(this).hide();
на всякий случай в ie это не работает, скрыть option по хорошему можно только удалением!
Ответить с цитированием
  #15 (permalink)  
Старый 05.12.2018, 12:40
Интересующийся
Отправить личное сообщение для Gidpoiiohika Посмотреть профиль Найти все сообщения от Gidpoiiohika
 
Регистрация: 04.12.2018
Сообщений: 22

рони,
Спасибо Вам большое, я Вам отправил видео, сейчас буду пробовать.
Ответить с цитированием
  #16 (permalink)  
Старый 06.12.2018, 15:57
Интересующийся
Отправить личное сообщение для Gidpoiiohika Посмотреть профиль Найти все сообщения от Gidpoiiohika
 
Регистрация: 04.12.2018
Сообщений: 22

рони,
Здравствуйте, можете подсказать как можно переписать код что бы он работал когда я нажимаю на кнопку 'add categories'
вот сам код
script 
  | var sel = $('.js-category-select'),
    opt = $('option:not(:first-child)', sel);
    function review(){
      var chosen = sel.map(function(i, el){
        return $(':selected',el);
      });
      var category = 0;
      opt.show().prop('disabled', false);
      chosen.each(function(i, el){
        category = $(el).val();
        opt.not(el).filter(function(){
          return $(this).val() == category;
        }).hide().prop('disabled', true);
      });
    }
    sel.on('change', review)

вот кнопка
<fieldset id="categories_projects"><a class="btn btn-primary dropdown-toggle add_fields" data-association="categories_project" data-associations="categories_projects" data-association-insertion-template="<div class=&quot;nested-fields&quot;><div class=&quot;field&quot;><div class=&quot;form-group&quot;><label class=&quot;control-label&quot; for=&quot;project_categories_projects_attributes_new_categories_projects_category_id&quot;>Category</label><select class=&quot;form-control js-category-select&quot; name=&quot;project[categories_projects_attributes][new_categories_projects][category_id]&quot; id=&quot;project_categories_projects_attributes_new_categories_projects_category_id&quot;><option value=&quot;&quot;>Select Category</option>
<option data-default_external_rate=&quot;0&quot; value=&quot;5&quot;>Management</option>
<option data-default_external_rate=&quot;0&quot; value=&quot;7&quot;>DevOps</option>
<option data-default_external_rate=&quot;0&quot; value=&quot;8&quot;>Design</option>
<option data-default_external_rate=&quot;111&quot; value=&quot;6&quot;>RoR Developer</option></select></div><div class=&quot;form-group&quot;><label class=&quot;control-label&quot; for=&quot;project_categories_projects_attributes_new_categories_projects_external_rate&quot;>Default External Rate</label><input class=&quot;form-control js-external_rate&quot; type=&quot;text&quot; name=&quot;project[categories_projects_attributes][new_categories_projects][external_rate]&quot; id=&quot;project_categories_projects_attributes_new_categories_projects_external_rate&quot; /></div><input type=&quot;hidden&quot; name=&quot;project[categories_projects_attributes][new_categories_projects][_destroy]&quot; id=&quot;project_categories_projects_attributes_new_categories_projects__destroy&quot; value=&quot;false&quot; /><a class=&quot;btn btn-primary remove_fields dynamic&quot; href=&quot;#&quot;>Remove Categories</a></div></div><script>$('.js-category-select').on('change', function(e) {
  var optionSelected = $(&quot;option:selected&quot;, this).data('default_external_rate');
  $(this).closest('.field').find('.js-external_rate').val(optionSelected)
});</script><script>var sel = $('.js-category-select'),
opt = $('option:not(:first-child)', sel);
function review(){
  var chosen = sel.map(function(i, el){
    return $(':selected',el);
  });
  var category = 0;
  opt.show().prop('disabled', false);
  chosen.each(function(i, el){
    category = $(el).val();
    opt.not(el).filter(function(){
      return $(this).val() == category;
    }).hide().prop('disabled', true);
  });
}
sel.on('change', review)</script>" href="#">add categories</a></fieldset>

Последний раз редактировалось Gidpoiiohika, 06.12.2018 в 16:02.
Ответить с цитированием
  #17 (permalink)  
Старый 06.12.2018, 16:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Gidpoiiohika,
не могу ... и не понимаю зачем нужны эти селекторы, чем код из поста №8 не устраивает
https://javascript.ru/forum/499768-post8.html
Ответить с цитированием
  #18 (permalink)  
Старый 06.12.2018, 17:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

зависимые селекторы запрет одинакового выбора
Gidpoiiohika,
попытка номер раз ...
код для медитации ...
в качестве шаблона скрытый селект.
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .remove:after{
     content: "Remove Category";
     background-color: #0000FF;
      padding: 5px;
      margin: 5px;
      border-radius: 4px;
  }
  li{
      margin: 15px;
      padding: 10px;
  }
  .patern{
      display: none;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $(".add").click(function() {
        var html = "<input><span class='remove'>";
        var li = $("<li>").appendTo("ul");
        var sel = $(".patern").clone(true).removeClass("patern").appendTo(li);
        $(html).appendTo(li);
        li.on("click", ".remove", function() {
            var data = sel.data("opt");
            $(".form-control").not(sel).append($(data).clone());
            li.remove()
        })
    });
    $("ul").on("change", ".form-control", function() {
        var i = this.selectedIndex;
        var value = this.value;
        var data = $(this).data("opt");
        if (i) {
            $(".form-control").not(this).find("option[value='" +
                value + "']").remove();
            $(this).data("opt", this.options[i])
        } else $(this).removeData("opt");
        if (data) $(".form-control").not(this).append($(data).clone())
    })
});
  </script>
</head>

<body>
<ul>

</ul>



<select class="patern form-control js-category-select" >
  <option value="" >Select Category</option>
  <option data-default_external_rate="0" value="5">Management</option>
  <option data-default_external_rate="0" value="7">DevOps</option>
  <option data-default_external_rate="0" value="8">Design</option>
</select>
<input name="" type="button" value="Add Category" class="add">



</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите как удалить div alex2012 jQuery 5 13.10.2016 17:43
Как удалить элемент таблицы seoneo Элементы интерфейса 2 29.08.2012 18:54
Как получить значения вышестоящих элементов дерева TreeStore ? Allan Stark ExtJS 1 31.07.2012 16:48
КАК удалить []-символы из строки?! Brook Events/DOM/Window 4 25.04.2012 16:38
как найти и удалить массив из массива? FRIE Общие вопросы Javascript 8 14.03.2011 15:48