Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana typu obiektu input - type="text" i IE
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
zacharyjos
Witam
To mój pierwszy post na forum. Zmieniam skryptem js pole formularza input "upload pliku" file, na text:
Kod
document.formularz_dodaj.p_nazwa.type="text;"

W FF i Operze działa świetnie natomiast nie chce w IE. Pojawia się komunikat:
Cytat
Nie można odczytać właściwości: type. To polecenie nie jest obsługiwane.


Czy można jakoś inaczej zmienić typ obiektu input file?
kilas88
Input zagnieżdżasz w jakimś elemencie nadrzędnym (np. DIV). Następnie chcąc zmienić typ pola - zmieniasz zawartość pola DIV (innerHTML) wstawiając nowe pole. Możesz też wyczyścic ten DIV i działać na modelu DOM.
zacharyjos
Cytat(kilas88 @ 4.04.2009, 15:15:39 ) *
Input zagnieżdżasz w jakimś elemencie nadrzędnym (np. DIV). Następnie chcąc zmienić typ pola - zmieniasz zawartość pola DIV (innerHTML) wstawiając nowe pole. Możesz też wyczyścić ten DIV i działać na modelu DOM.

Jestem żółtodziobem. W js siedzę dopiero 4godziny ;/
Czytałem, że innerHTML nie jest żadnym standardem, więc wolałbym z niego nie korzystać.
Wolałbym skorzystać z modelu DOM. Czy ten zapis, który używam w wyżej podanym skrypcie to jest z modelu DOM?

Cytat(kilas88 @ 4.04.2009, 15:15:39 ) *
Input zagnieżdżasz w jakimś elemencie nadrzędnym

Kod
<span class="postcolor"><form name="formularz_dodaj"</span> metod="... >
          <input name="<span class="postcolor">p_nazwa</span>" type="file" /> .....
      </form>

Elementem nadrzędnym jest formularz. I właśnie wyżej podany zapis działa w FF, nie działa w IE. Jak przechytrzyć IE?
kilas88
Twój przykład nie dotyczy DOM.

Możesz zrobić :

Kod
<div id="pole">
  <input type="text" id="stary" />
</div>

<input type="button" value="zmień input" onclick="zmien_przycisk()" />

<script type="text/javascript">
  function zmien_przycisk() {
    var stary_element = document.getElementById('stary');

    var pole = document.getElementById('pole');
    pole.removeChild(stary_element);

    var nowy_element = document.createElement('input');
    nowy_element.type = 'file';
    
    pole.appendChild(nowy_element);
  }
</script>


Przy pomocy innerHTML łatwiej i wcale nie tak wbrew standardom.

Pozdrawiam.
kilas88
Cytat(Rafael @ 4.04.2009, 20:12:41 ) *
mógłbyś nieco rozwinąć myśl?


innerHTML znajduje się w dokumentacji modelu DOM. dlaczego by nie korzystać z tej właściwości ?
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.