Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niezamierzone "czyszczenie" pól formularza
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
przemoos
Witam!

Napisalem prosty skrypt:

Kod
<script language="javascript">
    var countInputs = 0;
    function dodajInput()
    {
  document.getElementById('inputLayer').innerHTML+='<br /><input name="userfile_'+countInputs+'" type="file" />';
  countInputs++;
    }
</script>


i formularz do tego:
Kod
<form enctype="multipart/form-data" method="post">
<div id="inputLayer">
    <input type="hidden" name="MAX_FILE_SIZE" value="900000" />
</div>
    <input type="submit" value="Send File" />
</form>
<a href="javascript:dodajInput();">Dodaj pole formularza</a>


Problem w tym, że klikając w link dodający nowe pole formularza kasuje mi się wcześniej wpisana wartość w innych polach input. Jak to naprawić?
Serg_
Zmieniasz tekst w divie, a nie tworzysz nowego inputa, do tego sluzy metoda createElement().
Kod
function addInput(id)
{
    var oDiv = document.getElementById(id);
    var oInput = document.createElement("<input type='file'>");
    oDiv.appendChild(oInput);
    return;
}

a poziej
  1. <div id='fragment'>
  2. <a href="javascript:addInput('fragment')">Tutaj nowe inputy:</a>
  3.  
  4. </div>


Tym samym sposobem mozna tworzyc dowolnego inputa, tabele, elementy tabeli itp.
O to chodzilo?

Pozdrowka

Serg
przemoos
No, prawie.. smile.gif

Twoja funkcja podczas tworzenia nowego elementu zwracała błąd (przeglądarka Firefox).

Dzięki Tobie jednak napisałem to o co mi chodziło, dzięki za nakierowanie smile.gif
Poniżej cały kod, który działa:

Kod
var countInputs = 0;
function addInput(id)
{
    var oDiv = document.getElementById(id);
    var inputElement = document.createElement("input");
    inputElement.setAttribute("name","userfile_"+countInputs);
    inputElement.setAttribute("type","file");
    oDiv.appendChild(inputElement);
    countInputs++;
}


i do tego html:

  1. <div id="inputLayer"></div>
  2. <a href="javascript:addInput('inputLayer')">Dodaj input</a>
Serg_
A tak, zapomnialem dodac, ze IE.
Standardowo jako parametr metody createElement() podaje sie "input", "td", "tr" itp. A parametry obiektu definiuje sie osobno.
IE jest w tym temacie bardziej tolerancyjny i troszke rozleniwia winksmiley.jpg

Pozdrawiam

Serg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.