Diskuze: Alespoň jeden z checkboxů je povinný
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 23 zpráv z 23.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí HTML a CSS, jsme si ověřili nabyté zkušenosti z kurzu.
Já bych se opravdu držel javascriptu, ale pokud se mu opravdu chceš vyhnout, můžeš to ošetřit na straně serveru. Tedy napsat, že je alespoň jeden povinný, a pokud ho nezaklikne, tak na něj vyskočí error.
Jako, ono u takhle malého kódu (pár řádků) je to ve finále jedno. Spíš jsem čekal že když to jde v HTML ošetřit u radio inputu, tak to půjde i u checkboxu. No, pokud nikdo nebude vědět tak mi ve finále nic jiného nezbude
Tak ono to přímo u radio inputů nejde ošetřit, ono to je jejich vlastností. Celkově radio inputy existují právě, proto aby jsi mohl zvolit jednu možnost. Takovéhle věci se podle mě nijak rozumě pomocí html nedají ošetřit
To máš pravdu, ale předpokládal bych že když dáš required na ten kokrétní, tak to bude vyžadovat aby jsi zvolil tu danou možnost (stejně jako se chová u checkboxů) Ale pak by podle této logiky asi nastala zajímavá situace kdybys dal required všem radio inputům No nic, jdu tam hodit ten script
Zdá sa mi, že to ide urobiť aj čisto s pomocou CSS tak, že použiješ sadu radio buttonov a preštýluješ ich pomocou CSS aby vyzerali ako checkboxy. Trik je tuším v tom, že použiješ štýl na radio:before a radio:after. Ale otestoval by som to potom v rôznych prehliadačoch, lebo je to viacmenej hack a nie som si istý kde to pôjde a kde nie.
U radio buttonu nebude moci volit více možností, ale jen jednu
No jasný, ale tím, že jednomu dáš required, tak se to uplatní na celou skupinu radio buttonů. Když mají stejné jména, tak patří k sobě. V případě checkboxů je každý input sám za sebe.
Tady máš jednoduchá řešení s javascriptem:
https://stackoverflow.com/…t-1-required
https://stackoverflow.com/…f-checkboxes
https://stackoverflow.com/…one-checkbox
To je tiež pravda. Popravde, ja takéto niečo riešim validátorom pri odoslaní formulára.
Já ten script už mám, ale právě jsem hledal tu možnost skrze HTML. No, nevadí
<script type="text/javascript">
$(document).ready(function () {
$('#button').click(function() {
checked = $("input[type=checkbox]:checked").length;
if(!checked) {
alert("Některá pole nejsou vyplněna.");
return false;
}
});
});
</script>
Mimochodom, často som videl obdobne napísaný kód a nie celkom tomu rozumiem... Nie tým lomítkam v BR, tie sú naprosto zbytočné, tým som si istý. Majú zmysel jedine ak by stránku parsoval nejaký XML parser a nie len prehliadač. Čo si nemyslím, že je Tvoj prípad. Ak sa však mýlim, tak potom Ti zas chýbajú lomítka aj v každom INPUT. Čomu však nerozumiem je to name="cil[]". Prečo je ten identifikátor zapísaný ako literál poľa? To má aký zmysel? Nevidím to prvý krát, potažmo nechápem to prvý krat...
<input type="radio" name="cil[]" value="Praha" required>Praha<br />
<input type="radio" name="cil[]" value="Brno">Brno<br />
<input type="radio" name="cil[]" value="Plzeň">Plzeň<br />
Souhlasím, u pole typu radio není možné vybrat více hodnot, není tedy třeba odesílat data v poli (vždy bude 1 hodnota). Toto má smysl u polí typu checkbox, kde je možné vybrat hodnot více.
U radio buttonů je to trochu zvláštní, pravda, protože vždy vybereš jen jeden prvek. Avšak u checkboxů, kde můžeš vybrat více prvků a normálně po odeslání by se ti dostala na server jen poslední hodnota tak pomocí [] pošleš na server všechny vybrané hodnoty.
U radio inputů v tom ale smysl nevidím a pravděpodobně ani žádný není.
Co se [] tyče, jsou tam z toho důvodu ze je to poměrně obsáhlý formulář a pod těmi radio inputy je ještě textovy input s name="cil". Ma to větší smysl u těch checkboxu ale nechal jsem to i zde
Na server sa mi dostanú všetky hodnoty. Len ako pozerám, PHP pri parsovani query stringu napríklad: ?cil=Praha&cil=Brno si najprv nadefinuje $_POST["cil"] = Praha a potom prepise na $_POST["cil"] = Brno. Potom to chápem - píše sa to tak kvôli tomu priblblému PHP. Alebo? Je ešte iný jazyk na serveri kvôli ktorému to tak treba písať?
To je spíše nějaká obecná specifikace. Zkoušel jsem na serveru v Dartu a taky bere jen poslední hodnotu. Prostě se vytváří asociativní pole a to se snaží naplnit. Pokud máš více hodnot se stejným klíčem, prostě ti to přepíše.
Ale to je práve ten problém. Neviem o tom nájsť ani zmienku v špecifikácii. Len odkedy je HTML living standard, možno sa špecifikácia zmenila a ja som pozeral zastaralé dokumenty. Nevieš o nejakej oficiálnej špecifikácii kde je to definované?
Tak ono se prostě jenom stačí řídit tím, že ty identifikátory mají být unikátní. Je možné, že to chování třeba není definované a shodou okolností to většinou funguje tak, že získáš jen poslední hodnotu. A nebo to je někde zahrabaný v nějaký specifikaci
Ale podle některých tvrzení na to specifikace neexistuje a je to věc
implementace
https://stackoverflow.com/…6566/3972886
Dík za ten link, presne to som si aj myslel. Že v špecifikácii o tom nie je ani slovo. Tu máš query string a rob si s ním čo chceš...
Ve specifikaci HTTP zřejmě ne. Ale v dokumentaci technologií, které s ním pracují, by se to objevit mělo.
To už bude záležať od konkrétneho jazyka. Postup w3c logiku má. Tu máš z klienta query string, čiže sadu key/value párov a pozor, keys nie sú unique. A keď si robíš svoj programovací jazyk na strane servera, sám a po svojom sa vysporiadaj s tým, že sa tam môže meno kľúča opakovať. Mne to príde v poriadku zo strany w3c. No a php sa s tým zjavne vysporiadalo tak, že odporúča, keďže to nie je prehrešok voči hml špecifikácii, že zapíšte hodnotu name atribútu ako array literal a my s tým budeme na serveri rátať a odovzdáme vám to ako pole. OK, tiež spôsob. Nepáči sa mi to síce, ale chápem to. Presnejšie, už to chápem.
Zobrazeno 23 zpráv z 23.