Cum de a proiecta un formular HTML extensibil fără JavaScript?

Proiectarea și procesarea unui formular în care utilizatorul poate adăuga un număr arbitrar de câmpuri noi de intrare este foarte obositor fără a utiliza JavaScript .

În prezent, fac următoarele: utilizând două butoane de trimitere diferite într-un formular, unul pentru adăugarea unui nou câmp de introducere și unul pentru trimiterea formularului care rezultă într-o cerere de bază de date.

  • the used method is POST

    for adding new input fields I would like to use GET but since two methods in one form is not possible I have to do it in the POST request.

  • making this for one type of input field is rather easy, but when you need to do this for sub-forms (some groups of input fields in the same form), this becomes not only tedious, but also error-prone!

Nu sunt mulțumit, există o modalitate mai inteligentă de a realiza acest lucru fără a începe să scrieți o mulțime de cod de procesare și să faceți redirecționare sau cel puțin să ușurați implementarea pentru a reduce riscul de eroare!

De asemenea, poate exista o soluție oferită de Java pentru a rezolva această problemă cu genericitate, deoarece folosesc servlets Java .

Cu JavaScript activat aș oferi o soluție separată, mă ocup doar de soluția care se încadrează, acest lucru nu este cazul normal.

0
@Diodeus Ce se întâmplă dacă JavaScript nu este disponibil?
adăugat autor Mahoni, sursa
@Jivings Este etichetat cu Java, deoarece acesta este limba de procesare a serverului pe care o folosesc (date meta-întrebare;)
adăugat autor Mahoni, sursa
@Diodeus Desigur, acest lucru nu ar trebui să fie experiența primară, cu JavaScript aș ușura formularul de umplere, dar am nevoie de o ușoară punere în aplicare punerea în aplicare.
adăugat autor Mahoni, sursa
Sunt de acord, JS ar trebui să fie o cerință, deoarece este un webapp pe care îl construiesc. Asta este absolut legal
adăugat autor Mahoni, sursa
Ar trebui să utilizați JavaScript pentru aceasta.
adăugat autor Tom, sursa
Știu că este important să oferim rezervări ori de câte ori este posibil, dar aici s-ar putea să nu merită efortul. Gândiți-vă cât de mult timp ați renunțat la acest lucru și dacă ar fi mai util să întrebați pur și simplu utilizatorii fără Javascript (cu mult mai puțin decât 1%, aș paria) pentru a le permite.
adăugat autor Matchu, sursa
Ai văzut
adăugat autor apsillers, sursa
Sunt de acord: trecerea dus-întors pe server pentru a adăuga un câmp este o experiență teribilă pentru utilizatori. Nu există nici un motiv să nu folosiți JavaScript pe client pentru a efectua această sarcină.
adăugat autor Diodeus - James MacFarlane, sursa
În aceste zile, utilizatorul ar trebui să dezactiveze DELIBERAT JavaScript și ar fi conștienți de consecințele acestuia. Sigur, ai putea să coborâți la versiunea de vânătoare, dar asta nu ar trebui să fie experiența PRIMARĂ.
adăugat autor Diodeus - James MacFarlane, sursa
De ce doriți să comunicați cu serverul pentru a adăuga un nou câmp de formular atunci când se poate face doar pe client? De asemenea, de ce se etichetează Java ?
adăugat autor Jivings, sursa
@Mahoni Vă puteți baza pe JavaScript pentru a fi disponibil în aceste zile. Nu există multe site-uri pe care să puteți merge pe care nu le cereți.
adăugat autor Jivings, sursa

1 răspunsuri

See, working without JavaScript severely restrict your abilities: you have to rely upon the standard HTTP request/response cycle. In other words, you have to rebuild a new page (adding some input field) and send this new page each time - there's no workarounds.

Iată cum aș pune în aplicare:

<form action="/path/to/action" method="post">
  <input name="param_a" />
  <input name="param_b" />
  <button type="submit" name="next_input" value="param_c">Add a field</button>
  <button type="submit" name="submit">Submit your form</button>
</form>

... atunci în cadrul codului de pe server aș verifica dacă paramul next_input este trimis sau nu. Dacă este trimis, valoarea sa va fi folosită pentru a obține controlul care urmează să fie adăugat și pentru a da param_d , de exemplu, la următorul next_input .

UPDATE: dar nu pot să mă întreb dacă este cu adevărat necesar. De obicei, proiectăm pentru cazurile "No JS" când aceste pagini sunt pagini de destinație tipice (scanate de roboții de căutare). Gândindu-vă la unii utilizatori care vor merge pe pagina dvs. fără ca JS să fie activat, dar dispuși să o folosească cu toate lucrurile frumoase activate ... ei bine, nu este foarte eficient din punct de vedere al costurilor, să spunem cel puțin. )

0
adăugat