2013-10-15 3 views
0

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

У меня есть

Number of Selects 
    <select id="selectNumber"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    </select> 

И один

Select 1 Options 
    <select id="selectN1"> 
    <option>option1</option> 
    <option>option2</option> 
    </select> 

Теперь, меняя #selectNumber следует добавить еще SelectN * на основе его стоимости, и это то, что нужно сделать, чтобы:

$("#selectNumber").on("change", function(){ 
    var n = $("#selectNumber").val(); 
    for (i=2;i<=n;i++){ 
     var c = i-1; 
     $("#selectN"+c).after("<br />Select "+i+" options <select id='selectN"+i+"'><option>option1</option><option>option2</option></select>"); 
    } 
} 
); 

Это скрипка http://jsfiddle.net/xPZUn/14/

На моей странице он работает нормально, но он добавляет только второй элемент выбора (даже если в основном выборе выбрано 3 или более). Думаю, это потому, что цикл for не может выбрать динамически созданные элементы, чтобы добавить больше. На скрипке он даже не добавляет второй выбор.

Любые предложения?

Благодаря

ответ

3

Во-первых, ваш код имеет несколько синтаксических ошибок с отсутствующими закрытия скобки и фигурные скобки. Как только они исправлены, они работают, однако, если вы выберете 3, а затем 1, вы получите 4 элемента выбора, поэтому вам нужно очистить ранее добавленные. Попробуйте это:

$("#selectNumber").on("change", function() { 
    $('.additional-select').remove(); // remove existing 
    for (i = 1; i < +$("#selectNumber").val(); i++) { 
     $("#selectN" + i).after('<div class="additional-select">Select ' + (i + 1) + ' options <select id="selectN' + (i + 1) + '"><option>option1</option><option>option2</option></select>'); 
    } 
}); 

Example fiddle

Обратите внимание, что i + 1 обернут в скобках, чтобы обеспечить результат добавляются, а не значение i и 1 приложенным индивидуально, как это было ранее происходили.

+0

Да, я написал это довольно спешно и допустил некоторые ошибки, отредактировал обновленную скрипку в op. – g0dl3ss

+0

Спасибо за добавленную часть. Помимо удаленной части это было так на моей странице, но это все еще не сработало; я попытаюсь изучить его немного дальше как можно скорее. Спасибо за ответ – g0dl3ss

+0

@ g0dl3ss не проблема, рада помочь –

Смежные вопросы