Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyczyszczenie tylko jednego pola typu FILE z formularza
kodif
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.05.2010

Ostrzeżenie: (0%)
-----


Witam

Mam problem z formularzem, są w nim pola tekstowe, jest textarea i są trzy pola wyboru plików do wysłania na serwer.
Pliki są opcjonalne, można je wysyłać bądź nie.

Czasami uzytkownik pomyli się i wybierając plik kliknie nie to co trzeba, lub wybierze plik a potem jednak chce zrezygnować z dołączenia danego pliku do wysyłanego formularza.

Jak można usunąc tylko jeden wybrany plik w formularzu, nie kasując całości?

Wstawiłem dodatkowy button z funkcją czyszczenia konkretnego pola (w poniższym przykładzie pola tekstowego "opis1"), ale nie działa na type="file"

kod (uproszczony) wygląda tak

  1. function cfile(){
  2. document.getElementById('myform').opis1.value='';
  3. return true;
  4. }
  5.  
  6. <form name="myform" id="myform" enctype="multipart/form-data" method="post" [.....] />
  7. <input name="title" type="text" value=""/>
  8. <input name="opis1" type="text" value=""/>
  9. <textarea name="bdy" />
  10.  
  11. <input name="plik_upload[]" type="file" class="main" value="" size="60">
  12.  
  13. <input type="button" name="clearfile" value="kasuj" onclick="cfile()"/><br>
  14. ....
  15.  


co trzeba wstawić do funkcji cfile żeby niechciany wybór pliku zniknął?

Już sobie poradziłem

O ile przy
Cytat
<input name="opis1" type="text" value=""/>

nie jest wymagane id pola bo i tak
Cytat
document.getElementById('myform').opis1.value

znajdzie właściwy element to w przypadku tablic id okazało się być konieczne

czyli ma być

  1. <input name="plik_upload[]" id="plik1" type="file" class="main" value="" size="60">
  2.  
  3. a w funkcji cfile
  4. document.getElementById('myform').plik1.value



A jak to zrobic aby przekazać różne id do funkcji cfile?

Ten post edytował kodif 17.02.2012, 13:18:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Abaddor
post
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

Ostrzeżenie: (0%)
-----


Rozumiem że po dodaniu pliku tworzyć albo pokazujesz kolejny input file?

Wiec czemu ich nie ponumerujesz?
Aby było:
  1. <input name="plik_upload[0]" id="file-0" type="file" class="main" value="" size="60">
  2. <input name="plik_upload[1]" id="file-1" type="file" class="main" value="" size="60">
  3. <input name="plik_upload[2]" id="file-2" type="file" class="main" value="" size="60">


Wtedy możesz zarządzać każdym bez problemu:)

Przy dodaniu kolejengo pola, sprawdzasz jaki jest najwyższy ID i dodajesz kolejny, w tym wypadku 4,5,6 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kodif
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.05.2010

Ostrzeżenie: (0%)
-----


Nie, nie tworzę kolejnego input file, są w formularzu od razu. Moim problemem jest wyczyszczenie dowolnego input file bez wyczyszczenia całości formularza. Już wiem że ponumerowane id jest mi potrzebne, natomiast (raczkuje w JS) nie wiem jak skonstruować funkcję i jej parametry aby otrzymać takie coś

  1. document.getElementById('myform').(IMG:style_emoticons/default/questionmark.gif) .value='';
  2. return true;
  3. }
  4.  
  5. <input name="plik_upload[0]" id="file-0" type="file" class="main" value="" size="60">
  6. <input type="button" name="clearfile" value="kasuj" onclick="cfile(file-0)"/>
  7.  
  8. <input name="plik_upload[1]" id="file-1" type="file" class="main" value="" size="60">
  9. <input type="button" name="clearfile" value="kasuj" onclick="cfile(file-1)"/>
  10.  
  11. <input name="plik_upload[2]" id="file-2" type="file" class="main" value="" size="60">
  12. <input type="button" name="clearfile" value="kasuj" onclick="cfile(file-2)"/>


Ten post edytował kodif 17.02.2012, 14:05:15
Go to the top of the page
+Quote Post
Abaddor
post
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 9
Dołączył: 30.06.2009

Ostrzeżenie: (0%)
-----


  1.  
  2. document.getElementById('file-2').value = '';
  3.  
Go to the top of the page
+Quote Post
kodif
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.05.2010

Ostrzeżenie: (0%)
-----


Dziękuje, wystarczyło pominąc 'myform' (IMG:style_emoticons/default/smile.gif)

Walki ciąg dalszy. Taki oto kod działa i wykonuje się w FF, natomiast w IE oraz Operze nie.
Jakies podpowiedzi dlaczego?

FF 10, IE8, Opera11


  1. function cfile(id){
  2. document.getElementById(id).value='';
  3. return true;
  4. }
  5.  
  6.  
  7. <form name="myform" id="myform" enctype="multipart/form-data" method="post" action="k.php"/>
  8. <input name="title" type="text" value="dxsdsds"/>
  9. <input name="opis1" type="text" value="opis1 sdsavdwfed"/><br>
  10. <input name="plik_upload[]" id="plik1" type="file" class="main" value="" size="60" />
  11. <input type="button" name="clearfile" value="kasuj" onclick="cfile('plik1')"/><br>
  12. <input name="plik_upload[]" id="plik2" type="file" class="main" value="" size="60" />
  13. <input type="button" name="clearfile" value="kasuj" onclick="cfile('plik2')"/><br>
  14. <input name="plik_upload[]" id="plik3" type="file" class="main" value="" size="60" />
  15. <input type="button" name="clearfile" value="kasuj" onclick="cfile('plik3')"/><br>
  16. <br>
  17. </form>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 20:45