Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[HTML/JS/jQuery] Form per tabelrij, correcte syntax?

Pagina: 1
Acties:
  • 340 views sinds 30-01-2008
  • Reageer

  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 15:36
Ik probeer een tabel te bouwen waar elke rij een form voorstelt (het stelt een editor voor). Helaas heb ik hier wat problemen mee in Firefox ism jQuery.

Ik heb het volgende:

code:
1
2
3
4
5
6
7
<table>
<form action="test.html" method="post">
<tr><td><input name="i1" /></td><td><input name="i2" /></td></tr>
</form>

...
</table>


Ten eerste: deze code komt niet door de validator, omdat een <table> element alleen de elementen <tr> <thead> <tbody> en <tfoot> mag bevatten. Tevens mag een <tr> element alleen een <td> of <th> bevatten, dus daar mag het ook niet.

Op zich wordt dit geaccepteerd in zowel IE6, FF en Opera9.

Maar nu gooi ik het volgende erbij met jquery:

<body onload="alert($('form input').length));">

En deze resulteerd in zowel IE6 als Opera in het goede antwoord (in dit voorbeeld 2x aantal rijen).
In FF levert dit helaas 0 op. Dit heeft puur te maken met het feit dat het <form> element zich binnen de <table> bevind. Plaats je deze buiten het table element kan FF ze wel vinden. Weet iemand een correcte manier om zoiets aan te pakken of een oplossing voor dit probleem?

NB: $('form') levert wel resultaat op. Maar bijvoorbeeld $('form tr') niet, terwijl dit in andere browsers toch wel degelijk werkt.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Zet de form tags buiten je tabel, en geef de elementen van je tabel een ID mee?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 09:56

Gonadan

Admin Beeld & Geluid, Harde Waren
Ten eerste:
- zet je code even tussen [code] tags
- wat wil je precies doen

Verder:
Is het echt nodig om steeds een nieuwe form te maken?
Probeer ze anders binnen de cel van de tabel te zetten zoals het hoort.
Of per form een nieuwe tabel maken.

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 15:36
Ik wil een soort editor hebben waar elke regel een form voorsteld (welke dus 1 record in de database zal wijzigen). ID's doen niet ter sprake. Ik heb zojuist uitgevonden (met de webdeveloper toolbar), dat dit:

code:
1
2
3
4
5
6
<table>
<form action="test.html" method="post">
<tr><td><input name="i1" /></td><td><input name="i2" /></td></tr>
</form>

</table>


Gelezen wordt als:
code:
1
2
3
4
5
6
7
<table>
<form action="test.html" method="post"></form>
<tbody><tr><td><input name="i1"></td><td><input name="i2"></td></tr>


</tbody></table>
</body>


Oftewel: er is een </form> tag verzonnen!

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Gooi alles gewoon in 1 form en haal dat er serverside uit. Dit is echt totaal onlogisch.

Huur mij in als freelance SEO consultant!


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 09:56

Gonadan

Admin Beeld & Geluid, Harde Waren
Waarom noem je de velden dan niet zoiets:
code:
1
<tr><td><input name="i1[]" /></td><td><input name="i2[]" /></td></tr>

Dan heb je maar één form nodig en krijg je in je POST array gewoon arrays die je kan lezen.
Eventueel kan je nog een ID meegeven.

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • xces
  • Registratie: Juli 2001
  • Laatst online: 18-11 15:10

xces

To got or not to got..

HTML:
1
2
3
4
5
6
7
8
9
10
<body>
<form id="editable_form" action="test.html" method="post">
<input type="hidden" name="id" value="" />
<input type="hidden" name="newvalue" value="" />
</form>

<table id="editable_table">
<tbody><tr><td>Edit veld</td><td><a href="#" class="opslaan">Opslaan</a></td></tr>
</tbody></table>
</body>


Vervolgens, bij editen:
HTML:
1
2
3
4
jQuery('table#editable_table a.opslaan').click(function() {
  jQuery('#editable_form input[@name=id]').attr('value', '<id>');
  jQuery('#editable_form input[@name=newvalue]').attr('value', '<newvalue>');
});


En vervolgens een ajax submit naar de backend? tis maar een ideetje...

Suc6, xces (Gilles @ jQuery/jQuery-UI forums)

  • Deikke
  • Registratie: Juni 2004
  • Laatst online: 15:36
OK, thx, dat gaat wel werken denk ik.
Pagina: 1