Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js][php] etykieta checkboxa
Forum PHP.pl > Forum > Przedszkole
puz219
Witam.

mam pewien problem, mam funkcje w js, która dodaje mi checkboxy do formularza, tylko, że są to po prostu same okienka, a chcialbym, żeby jeszcze coś kolo nich pisało, tylko nie wiem jak coś takiego zrobić:

Oto kod funkcji dodającej checkboxy:
  1. function dodaj_element(kontener, value){
  2.      var znacznik = document.createElement('input');
  3.      znacznik.setAttribute('type', 'checkbox');
  4.      znacznik.setAttribute('name', 'pple');
  5.      znacznik.setAttribute('value', value);
  6.      znacznik.checked = true;
  7.      znacznik.className = 'lista';
  8.      var kontener = document.getElementById(kontener);
  9.      kontener.appendChild(znacznik);
  10. }


co zrobić, żeby koło checkboxa był jakiś napis:, bo tak, to ma coś takiego:

[+]
[+]

a chcialbym mieć coś takiego:

[+] tekst 1
[+] tekst 2

Proszę o pomoc.

Pozdrawiam
nospor
No dopisz jeszcze tworzenie elementu typu LABEL. Skoro masz juz INPUT to LABEL nie powinien byc problemem
puz219
Pokombinowałem z tym labelem i wyświetla etykietę, tylko, że jest jeszcze jeden problem.

Wyświetla mi coś takiego:

[+]
Tekst 1
[+]
Tekst 2

Wiem, że jest to związane ze stylami, przynajmniej tak mi sie wydaje, przestawiałem już co nieco, ale dalej nie potrafie rozwiązać tego problemu

Oto kod skryptu z labelem
  1. <script language="javascript">
  2. <!--
  3. function dodaj_element(kontener, value, nazwisko){
  4. var znacznik = document.createElement('input');
  5. znacznik.setAttribute('type', 'checkbox');
  6. znacznik.setAttribute('name', 'pple');
  7. znacznik.setAttribute('value', value);
  8. znacznik.checked = true;
  9. znacznik.className = 'lista';
  10.  
  11. var label = document.createElement("label");
  12.  
  13. var labeltext = document.createTextNode(nazwisko);
  14.  
  15. var kontener = document.getElementById(kontener);
  16. label.appendChild(labeltext);
  17. kontener.appendChild(znacznik);
  18. kontener.appendChild(label);
  19.  
  20. }
  21. //-->


A to arkusz stylów:
  1. <style type="text/css">
  2. <!--
  3. input.lista { display: block; }
  4. -->


Proszę o pomoc, chcialbym, żeby wyglądało tak:

[+] Tekst 1
[+] Tekst 2

Pomocy sciana.gif

Pozdrawiam
sobstel
styl bardziej powinien być float:left czy też display:inline
puz219
@sopel

Właśnie potrzebuje to wyświetlić jeden pod drugim, a nie w linii.

Jak dam float:left, albo display: inline to wtedy mi wyświetla w jednej linii i jest coś takiego:

[+] Tekst 1 [+] Tekst 2 [+] Tekst 3, itd.

A mi chodzi o taki efekt:

[+] Tekst 1
[+] Tekst 2
[+] Tekst 3

Proszę o pomoc, bo sam już chyba nic nie wykombinuję.

Acha i jeszcze coś, sprawdzałem na IE7 i tam jak dodaję checkboxy do formularza to są one domyślnie niezaznaczone, a dałem polecenie:
  1. znacznik.checked = true;
, w FF wszystko działa OK.

Co trzeba dopisać/zmienić w skrypcie,żeby w IE też dodawało zaznaczone.

Pozdrawiam.
wojckr
A jakbyś dał dla "tekst 1" "tekst 2" ... float:right ?
Albo checkbox+tekst dać w diva i wtedy znacznik byłby inline?

W drastycznych przypadkach generuję tekst np. '<input type="checkbox" name="..... ' i potem wstawiam to do diva poprzez innerHTML (ale najpierw sprawdzam czy da się w lepszy sposóB)
puz219
Zrobiłem tak:
  1. function dodaj_element(kontener, value, nazwisko){
  2.      var znacznik = document.createElement('DIV');
  3.      znacznik.innerHTML = '<input type="checkbox" name="maker[]" value=' + value + ' checked="checked" />' + nazwisko;
  4.      
  5.      var kontener = document.getElementById(kontener);
  6.      kontener.appendChild(znacznik);
  7.      
  8. }


Chciałbym jeszcze dodać do inputa pole id, które będzie liczba począwszy od 1 i zwiększającą się 1 dla każdego kolejnego inputa, tylko nie wiem, jak coś takiego mam zrobić.

Co dopisać, żeby id zmieniało się automatycznie o 1, czyli, żeby było cos takiego

  1. <input type="checkbox" id="1" name="maker[]" value="234" checked="checked" />' Tekst 1;
  2. <input type="checkbox" id="2" name="maker[]" value="234" checked="checked" />' Tekst 1;
  3. <input type="checkbox" id="3" name="maker[]" value="234" checked="checked" />' Tekst 1;


Proszę o pomoc.
wojckr
Id nie może być tylko liczbą, więc zamiast id="1" powinno być na przykład id="a1", id="a2" itd. (tzn może zadziałać tylko z liczbami, ale to byłoby niepoprawne).

Może tak (działa, sprawdzałem):

CODE

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>

<script language="javascript">

function checks() {

var ilosc=100; //ilosc checkboxów
var divs=''; //tu będą divy z checkboxami

for (n=0; n<ilosc; n++) {

value = 'wartosc '+n;
nazwisko = 'nazwisko '+n;

divs+= '<div><input type="checkbox" name="maker[]" value="' + value + '" checked="checked" id="a' + n + '" /><label for="a'+n+'">' + nazwisko + '</label></div>';
}

var kontener = document.getElementById('kontener');
kontener.innerHTML=divs;

}

</script>

</HEAD>

<BODY onload="checks()">

<form action="" method="get">
<fieldset id="kontener">
</fieldset>
</form>

</BODY>
</HTML>


Nie jest to idealny pomysł, tak jak próbowałeś wcześniej, z przypisywaniem nodów, appendowaniem byłoby znacznie lepiej, ale jesli się nie da..

Zwracaj uwagę na cudzysłowy, bo poprzednio zabrakło przy
...value='+value... | ...value=" '+value...
...(kontener)... | ...('kontener')...
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.