Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: name="doclist[]" i funkcje js
Forum PHP.pl > Forum > Po stronie przeglądarki
berdyk
Witam

W formularzu am takie kontrolki:
  1. <select name="dokument" multiple="multiple">
  2. <option value="1">1</option>
  3. <option value="2">2</option>
  4.  
  5. <INPUT class=log onclick="addSelectedToList('post','dokument','doclist')" type=button value="dodaj do listy">
  6.  
  7. <SELECT name=doclist multiple="multiple"></SELECT>
  8.  
  9. <INPUT onclick="delSelectedFromList('post','doclist')" type=button value="Usuń z listy">


oraz funkcje JS

Kod
function addSelectedToList( frmName, srcListName, tgtListName ) {
    var form = eval( 'document.' + frmName );
    var srcList = eval( 'form.' + srcListName );
    var tgtList = eval( 'form.' + tgtListName );

    var srcLen = srcList.length;
    var tgtLen = tgtList.length;
    var tgt = "x";

    //build array of target items
    for (var i=tgtLen-1; i > -1; i--) {
  tgt += "," + tgtList.options[i].value + ","
    }

    //Pull selected resources and add them to list
    for (var i=srcLen-1; i > -1; i--) {
  if (srcList.options[i].selected && tgt.indexOf( "," + srcList.options[i].value + "," ) == -1) {
     opt = new Option( srcList.options[i].text, srcList.options[i].value );
     tgtList.options[tgtList.length] = opt;
  }
    }
}

function delSelectedFromList( frmName, srcListName ) {
    var form = eval( 'document.' + frmName );
    var srcList = eval( 'form.' + srcListName );

    var srcLen = srcList.length;

    for (var i=srcLen-1; i > -1; i--) {
  if (srcList.options[i].selected) {
     srcList.options[i] = null;
  }
    }
}


staram się przesłac za pomocą metody POST WARTOŚCI pola "doclist" jednak po wyświetlenu przesłanej zmiennej
  1. <?php
  2. $_POST["doclist"]
  3. ?>

jej wartość jest zawsze ustawiona na ostatni element na liście w polu "doclist".

I tu ból bo ja chcę przesłć kilka wartości przez to pole tz przesłac tabele.

Dobra, zamieniam sobie nazwę pola "doclist" na "doclist[]" (zamieniam wszędzie), co w normalnych warunkach pozwala mi na przesłanie tej tabeli, ale nie tu.
Tabeli nie będzie bo javascript się przy tej nawzie pola WYBURACZ.

Proszę o pomoc.
orson
witam ...

aby odwołać się w js do elementu z [] w nazwie musisz użyć składni:
Kod
document.getElementByName(nazwa_z_doklejonymi+'[]').item(int - kolejne elementy od 0 do length-1)


pozdrawiam
berdyk
Możesz mi napisać w którym miejscu powininem to dopisać
czy juz w samym formularzu.
pozdro

ja wymysliłem sobie to tak, że musi być jakas 3 funkcja js (do której nie wiem jak sie zabrac) ktora przekształci mi pozycje wartości "doclisty" w łańcuch który będę mógł przesłać dalej. bo tak naprawdę po przesłaniu tabelę otrzymaną z $_POST["doclis"] exploduję w php.
orson
witam ...

zmień nazwę 2 selecta na [] a w kodzie js zmień
Kod
var tgtList = eval( 'form.' + tgtListName );

na
Kod
var tgtList = document.getElementsByName(tgtListName).item(0)


pozdrawiam
berdyk
orson super dzięki działa

trzeba było jeszcze zmienic analogicznie w drugiej funkcji js z
Kod
var srcList = eval( 'form.' + srcListName );

na
Kod
var srcList = document.getElementsByName(srcListName).item(0);


tylko powiedz mi co zrobić by z tego drugiego selecta słał wszystkie elementy a nie tylko ostatni.
teraz jest tak że wysyła (JEŚLI NIE SĄ WSZYSTKIE ZAZNACZONE, w selecie) ostatni element na liście,
JEŚLI WSZYSTKIE ZAZNACZONE, przesyła tabelę jak sie patrzy.

pozdro
orson
witam ...

he questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif przecież żeby przesłał to musi być selected ... inaczej to nie miałoby żadnego sensu gdyby zawsze słał całość ...

pozdrawiam
berdyk
wlasnie ma sens kiedy przekładasz z jednego selecta do drugiego
czyli z jednego okienka do drugiego zeby z tego drugiego poslac calosc co z pierwszego wlozylem
zobacz do gory tematu
orson
witam ...

ja wiem o co ci chodzi ale to przecież bez sensu żeby select się tak zachowywał ... no pomyśl ... to przecież jest SELECT ! musisz cos wybrać żeby to było przesłane ... jedynym wyjściem (takim na szybko) to w pętli w czasie wysyłania dać wszystkim elementom selected = true w js ... albo w ukrytych inputach przesłać ... jeżeli dodasz [] do nazw inputów to też dostaniesz array ...

pozdrawiam
berdyk
Hejka

Podoba mi sie opcja pętli
Coś więcej na ten temat, moze jakis mały kodzik. worriedsmiley.gif
orson
witam ...

to już musisz sam ... odwołujesz się do listy potem robisz fora po length i zmieniasz im selected na true

pozdrawiam
berdyk
tylko napisz mi na koniec keidy to robie
onsubmit czy przeaz inne zdarzenie

pozdrawiam
orson
witam ...

on submit

pozdrawiam
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.