Добавить поля ввода в контейнер div (javascript) - PullRequest
1 голос
/ 26 февраля 2012

Я хочу добавить html-данные в конец контейнера div.В настоящее время я делаю это с помощью innerHtml:

<script language="javascript">
var addid = 0;

function addInput(id){
    var docstyle = document.getElementById('addlist').style.display;
    if(docstyle == 'none')
        document.getElementById('addlist').style.display = '';

    addid++;

    var text = "<div id='additem_"+addid+"'><input type='text' size='100' value='' class='buckinput' name='items[]' style='padding:5px;' /> <a href='javascript:void(0);' onclick='addInput("+addid+")' id='addlink_"+addid+"'>add more</a></div>";

    document.getElementById('addlist').innerHTML += text;
}
</script>

<div id="addlist" class="alt1" style="padding:10px;">
    New list items are added to the bottom of the list.
    <br /><br />
</div>

Проблема в том, что значение, введенное в поля ввода, удаляется после добавления другого поля ввода.Как добавить контент без введенных данных и сохранить их?

PS: я не использую jquery.

Ответы [ 2 ]

4 голосов
/ 26 февраля 2012

innerHTML изменяет элементы формы сброса. Вместо этого используйте appendChild. Посмотреть это демо http://jsfiddle.net/5sWA2/

function addInput(id) {

    var addList = document.getElementById('addlist');
    var docstyle = addList.style.display;
    if (docstyle == 'none') addList.style.display = '';

    addid++;

    var text = document.createElement('div');
    text.id = 'additem_' + addid;
    text.innerHTML = "<input type='text' value='' class='buckinput' name='items[]' style='padding:5px;' /> <a href='javascript:void(0);' onclick='addInput(" + addid + ")' id='addlink_" + addid + "'>add more</a>";

    addList.appendChild(text);
}
1 голос
/ 26 февраля 2012

Взгляните на это http://reference.sitepoint.com/javascript/Node/appendChild

Так что-то вроде

document.getElementById('addlist').appendChild(text);
...