Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.05.2016, 00:41
xax xax вне форума
Новичок на форуме
Отправить личное сообщение для xax Посмотреть профиль Найти все сообщения от xax
 
Регистрация: 22.05.2016
Сообщений: 3

Как вставить в динамически сгенерированный div скрипт для генерации div-ов новых
Здравствуйте!
Не только не пониманию ни чего в jquery, но и вообще в каком бы то ни было программировании не смыслю ни чего. Но. Вследствие изучения ряда постов, в том числе и из вашего форума, накропал небольшой код для сайта, который обрабатывает значение для поля input, генерируя заданное количество div-вов с определенным содержанием, в котором ID для форм определяются динамически. Далее. В дополнение к имеющемуся содержанию нужно добавить скрипт (внутрь вновь генерируемого html), который внутри сгенерированных блоков точно так же позволял бы, в зависимости от значения вновь сгенерированного внутри div-а поля input, генерировать новые блоки в нужном количестве.
Иначе говоря, хочу в существующий код вставить код который точно также как существующий будет обрабатывать input с ID line-ob-is'+ [i+1] +' получаемый посредством обработки первого кода.
ЗЫ: Подозреваю, что то, что я пытаюсь делать - тупо по синтаксису не верно.
Подскажите - как прописывать?
Все выглядит примерно так (не ругайте за корявую подачу, я вообще не местный):


<div class="price-field-tx">
    <input type="number" id="line-ob" name="line-ob" value="0" min="0" max="100" />
</div>
<div class="price-text">
    <label for="line-ob">Бла бла бла</label>
</div>
<div id="line-ob-container">
</div>



$("#line-ob").change(function(){
   var kolloinput = $("#line-ob").val(),
   kollo = $("#line-ob-container > .price-range").length;
   if (kolloinput <= 100 && kolloinput > kollo) {
       for (i = kollo; i < kolloinput; i++) { 
           var loDiv = document.createElement("div");
           $(loDiv).addClass("price-range");
           $(loDiv).html('<div class="price-field-tx"><input type="number" id="line-ob-is'+ [i+1] +'" name="line-ob-is'+ [i+1] +'" value="0"  min="0" /></div><div class="price-text"><label for="line-ob-is'+ [i+1] +'">Бла бла бла выберите бла бла бла</label></div>  !!!!СЮДА ХОЧУ ВСТАВИТЬ СКРИПТ ПРАКТИЧЕСКИ ТАКОЙ ЖЕ КАК ВНЕШНИЙ!!!  ');
           $("#line-ob-container").append(loDiv);
       }
   }
   else {
       if (kolloinput <= 100) {
           for (i = kolloinput; i < kollo; i++) {
               $("#line-ob-container > .price-range").last().detach()
           }
         }
    }
});

Последний раз редактировалось xax, 22.05.2016 в 01:16.
Ответить с цитированием
  #2 (permalink)  
Старый 22.05.2016, 10:45
xax xax вне форума
Новичок на форуме
Отправить личное сообщение для xax Посмотреть профиль Найти все сообщения от xax
 
Регистрация: 22.05.2016
Сообщений: 3

Подскажите, как вообще вставлять скрипт в $(loDiv).html('..... '); ?
Не $(loDiv).html('<script>....</script>'); же. Следует ли как либо изменять текст вставляемого скрипта (экранировать какие-либо символы и тд.)?

И как вставляемый скрипт заставить работать для динамического ID line-ob-is'+ [i+1] +'. Как правильно записать его?
Ответить с цитированием
  #3 (permalink)  
Старый 22.05.2016, 11:17
Аспирант
Отправить личное сообщение для Alex_63 Посмотреть профиль Найти все сообщения от Alex_63
 
Регистрация: 22.08.2015
Сообщений: 71

xax,
$(loDiv).append('<script>//...тут скрипт<\/script>');


В одну строку, или так - для многострочного скрипта
var i=0;//к примеру

var script = function(){/*==|==;
  <script>
    alert("Тест");
    var n = #$1#;
  <\/script>

==|==;*/};
 script = script.toString().split('==|==;')[1].replace(/<\\\/script/gim,'</'+'script');//заменить #$1# на i+1: .replace('#$1#',i+1)
$(script).appendTo(loDiv);

Последний раз редактировалось Alex_63, 22.05.2016 в 11:22.
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2016, 11:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

xax,
скрипт не надо дублировать, достаточно написать его правильно почитав про делегировние в js и on в jQuery.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2016, 11:51
Аспирант
Отправить личное сообщение для Alex_63 Посмотреть профиль Найти все сообщения от Alex_63
 
Регистрация: 22.08.2015
Сообщений: 71

рони,
++

xax,

$("#line-ob").on("change", function() { //обработчик on ставит события и на элементы, появившиеся после его установки
   var kolloinput = $("#line-ob").val(),
       kollo = $("#line-ob-container > .price-range").length;
   if (kolloinput <= 100 && kolloinput > kollo) {
       for (i = kollo; i < kolloinput; i++) { 
           var loDiv = $("<div/>").addClass("price-range");
           $(loDiv).html('<div class="price-field-tx"><input type="number" id="line-ob-is'+(i+1)+'" name="line-ob-is'+(i+1)+'" value="0" min="0"/></div><div class="price-text"><label for="line-ob-is'+(i+1)+'">Бла бла бла выберите бла бла бла</label></div>');
           $("#line-ob-container").append(loDiv);
       }
   } else {
       if (kolloinput <= 100) {
           for (i = kolloinput; i < kollo; i++) {
               $("#line-ob-container > .price-range").last().remove()
           }
       }
   }
});

Последний раз редактировалось Alex_63, 22.05.2016 в 11:54.
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2016, 12:11
xax xax вне форума
Новичок на форуме
Отправить личное сообщение для xax Посмотреть профиль Найти все сообщения от xax
 
Регистрация: 22.05.2016
Сообщений: 3

Сасибо, рони и Alex_63!
Мне даже кажется, еще немного - и я начну что-то понимать )).
Не совсем понял, скрипт, заданный для инупта c ID line-ob, в этом случае будет работать и для создаваемых инпутов с динамическими ID?
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2016, 12:17
Аспирант
Отправить личное сообщение для Alex_63 Посмотреть профиль Найти все сообщения от Alex_63
 
Регистрация: 22.08.2015
Сообщений: 71

xax,
Тогда чуть иначе указывать селектор:
$("input[id^='line-ob']").on("change", function() { //обработчик on ставит события и на элементы, появившиеся после его установки
   var kolloinput = $("#line-ob").val(),
       kollo = $("#line-ob-container > .price-range").length;
   if (kolloinput <= 100 && kolloinput > kollo) {
       for (i = kollo; i < kolloinput; i++) { 
           var loDiv = $("<div/>").addClass("price-range");
           $(loDiv).html('<div class="price-field-tx"><input type="number" id="line-ob-is'+(i+1)+'" name="line-ob-is'+(i+1)+'" value="0" min="0"/></div><div class="price-text"><label for="line-ob-is'+(i+1)+'">Бла бла бла выберите бла бла бла</label></div>');
           $("#line-ob-container").append(loDiv);
       }
   } else {
       if (kolloinput <= 100) {
           for (i = kolloinput; i < kollo; i++) {
               $("#line-ob-container > .price-range").last().remove()
           }
       }
   }
});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Динамически вставить в dom скрипт несколько раз azdev Элементы интерфейса 2 04.11.2012 14:04
Как превратить скрипт в плагин для jquery? lilumi jQuery 8 16.09.2011 17:39
Скрипт для динимического изменения div arsen Общие вопросы Javascript 3 30.09.2010 11:29
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30