 
			
				04.12.2018, 20:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2018 
					
					
					
						Сообщений: 22
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
 Спасибо Вам большое! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.12.2018, 11:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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();
      }
    });
Вот когда я нажимаю сначала два раза добавить категорию а потом уже выбираю
  
потом я выбираю в категорию 
  
А это когда я нажимаю добавить категорию, выбираю категорию, ещё раз нажимаю добавить категорию выбираю и уже код не работает, а мне как то нужно сделать что бы именно так работал    и не могу понять как это сделать 
   
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.12.2018, 12:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Gidpoiiohika, 
я не знаю формат в котором вы пишите код, не понимаю ваших обьяснений, возможно вам поможет делегирование. 
уберите все change с селектов, и добавьте их родителю. 
$('.js-category-select').on('change', function(e)  заменить на 
$('селектор_родителя').on('change'  , '.js-category-select',function(e) 
 
sel.change 
на 
$('селектор_родителя').on('change'  , 'select',function(e) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.12.2018, 12:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Gidpoiiohika
			
		
	 | 
 
	| 
		 $('[value="' + cVal + '"]', sel).not(this).hide();
	 | 
 
	
 
 на всякий случай в ie это не работает, скрыть option по хорошему можно только удалением!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.12.2018, 12:40
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2018 
					
					
					
						Сообщений: 22
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 рони, 
 Спасибо Вам большое, я Вам отправил видео, сейчас буду пробовать. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.12.2018, 15:57
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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="nested-fields"><div class="field"><div class="form-group"><label class="control-label" for="project_categories_projects_attributes_new_categories_projects_category_id">Category</label><select class="form-control js-category-select" name="project[categories_projects_attributes][new_categories_projects][category_id]" id="project_categories_projects_attributes_new_categories_projects_category_id"><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>
<option data-default_external_rate="111" value="6">RoR Developer</option></select></div><div class="form-group"><label class="control-label" for="project_categories_projects_attributes_new_categories_projects_external_rate">Default External Rate</label><input class="form-control js-external_rate" type="text" name="project[categories_projects_attributes][new_categories_projects][external_rate]" id="project_categories_projects_attributes_new_categories_projects_external_rate" /></div><input type="hidden" name="project[categories_projects_attributes][new_categories_projects][_destroy]" id="project_categories_projects_attributes_new_categories_projects__destroy" value="false" /><a class="btn btn-primary remove_fields dynamic" href="#">Remove Categories</a></div></div><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><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.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
	
		
	
		
		
		
			
			 
			
				06.12.2018, 17:37
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				зависимые селекторы запрет одинакового выбора
			 
			
		
		
		
		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>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |