<ul> / <li> vs <form>

 


honsey
Gast

06.04.11
22:49 Uhr
ich wollte es erst nicht glauben, aber es liegt tatsächlich daran: <ul> und <li> elemente innerhalb eines forms sorgen irgendwie dafür, dass ich nicht mehr alles mit jquery rundläuft.

onchange von input-elementen soll eigenlich eine jquery-funktion abgefeuert werden. das funktioniert aber nur bei den ersten paar checkboxes. wenn ich alle <ul> und <li> innerhalb des form lösche funktionierts.

es scheint wirklich spezifisch am .change() zu liegen, weil wenn ich ein element markiere, dass dann keinen change auslöst und wieder ein funktionierendes anklicke – nimmt er den wert des nicht-funktlonierenden trotzdem mit. brain

ist das ein bug?
Spoiler (anzeigen):

  1. <div id="sidebar-left" class="grid_1 alpha">
  2. <h3>Filter</h3>
  3. <ul class="sidebar">
  4. <li>
  5. <h3 class="widget_title">Designer</h3>
  6. <form id="filterform" action="http://localhost/radar/" method="post">
  7. <ul>
  8. <li style="overflow-x: hidden"><input type="checkbox" name="designer[]" value="91"> Andrea Fogli</li>
  9. <li style="overflow-x: hidden"><input type="checkbox" name="designer[]" value="80"> Chris Kabel</li>
  10. <li style="overflow-x: hidden"><input type="checkbox" name="designer[]" value="73"> Christopher P...</li>
  11. <li style="overflow-x: hidden"><input type="checkbox" name="designer[]" value="87"> Filipe Alarc�...</li>
  12. <li style="overflow-x: hidden"><input type="checkbox" name="designer[]" value="84"> James Dyson</li>
  13. </ul>
  14. <li style="padding-left: 38px"><a href="" class="modalInput" rel="#yesno">Mehr…</a></li>
  15. </li>
  16.  
  17. <li>
  18. <h3 class="widget_title">Anmutungen</h3>
  19. <ul>
  20. <li><input type="checkbox" name="impression[]" value="57"> analog</li>
  21. <li><input type="checkbox" name="impression[]" value="55"> creme</li>
  22. <li><input type="checkbox" name="impression[]" value="61"> fineliner</li>
  23. <li><input type="checkbox" name="impression[]" value="48"> giftgrün</li>
  24. <li><input type="checkbox" name="impression[]" value="47"> grün</li>
  25. <li><input type="checkbox" name="impression[]" value="3"> holz</li>
  26. <li><input type="checkbox" name="impression[]" value="60"> pastell</li>
  27. <li><input type="checkbox" name="impression[]" value="50"> plastik</li>
  28. <li><input type="checkbox" name="impression[]" value="58"> rauh</li>
  29. <li><input type="checkbox" name="impression[]" value="53"> schwarz</li>
  30. <li style="padding-left: 38px;"><a href="" class="modalInput" rel="#yesno">Mehr…</a></li>
  31. </ul>
  32. </li>
  33.  
  34. <li>
  35. <h3 class="widget_title">Alter</h3>
  36. <ul>
  37. <li>Von: <select>
  38. <option>2011</option>
  39. </select></li>
  40. <li>Bis: <select>
  41. <option>2011</option>
  42. </select></li>
  43. </ul>
  44. </li>
  45.  
  46. <li>
  47. <h3 class="widget_title">Status</h3>
  48. <ul>
  49. <li><input type="checkbox" name="status[]" id="status-0"> Skizze</li>
  50. <li><input type="checkbox" name="status[]" id="status-1"> Prototyp</li>
  51. <li><input type="checkbox" name="status[]" id="status-2"> Veröffentlicht</li>
  52. </ul>
  53. </li>
  54.  
  55. </ul><!-- .sidebar -->
  56. </div><!-- sidebar-left -->
  57.  
  58. <div id="stage" class="grid_4">
  59.  
  60. <div class="grid_4 alpha" id="navigation_bar">
  61.  
  62. <select name="sort">
  63. <option value="ASC">Einpflegedatum ➷</option>
  64. <option value="DESC">Einpflegedatum ➹</option>
  65. </select>
  66.  
  67. <label for="eigene">Nur eigene Objekte anzeigen: </label>
  68. <input type="checkbox" name="eigene">
  69. </form>
  70. <script>
  71. jQuery('#filterform input').change( function(){
  72.  
  73. jQuery("#artefact-thumbs").html('Loading…');
  74.  
  75. // Send the data using post and put the results in a div
  76. jQuery.post( jQuery('#filterform').attr('action'), jQuery('#filterform').serialize(),
  77. function( data ) {
  78. var content = jQuery(data).find('#artefact-thumbs');
  79. jQuery("#artefact-thumbs").html(content);
  80. }
  81. );
  82.  
  83. });
  84. </script>
  85. </div>
Quelltext in Zwischenablage kopieren
Link zu diesem Beitrag in die Zwischenablage kopieren
Mister Ad
Werbung
Schon mal bei Zalando, Amazon oder eBay geguckt? Vielleicht wirst du dort fündig.

 
honsey
Gast

06.04.11
22:58 Uhr
wenn ich die verschachtelung reduziere geht es auch noch:
  1. <ul>
  2. <li>
  3. <form>
  4. <ul>
  5. <li><input></li>
  6. </ul>
  7. <ul>
  8. <li><input></li>
  9. </ul>
  10. </form>
  11. </li>
  12. </ul>
Quelltext in Zwischenablage kopieren

wenn da zwischen dann aber noch ein <ul> kommt ist der ofen aus… komisch
Link zu diesem Beitrag in die Zwischenablage kopieren
Rusty
Veteran

06.04.11
23:09 Uhr
Zwar keine Hilfe zur Problematik, aber ist das semantisch sinnvoll, Form-Elemente in Listen zu packen? Halte ich jetzt mal für zweifelhaft.
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

06.04.11
23:27 Uhr
semantisch sinnvoll wäre ja so ein aufbau, oder?

  1. <label for="check1">checkbox #1</label><input type="checkbox" name="check1">
  2. <label for="check2">checkbox #1</label><input type="checkbox" name="check2">
  3. <label for="check3">checkbox #1</label><input type="checkbox" name="check3">
Quelltext in Zwischenablage kopieren

den kann ich aber leider so schlecht formatieren, wenn ich beispielsweise sowas haben möchte:


vielleicht gibts aber auch doch eine möglichkeit? debil
Link zu diesem Beitrag in die Zwischenablage kopieren
Jonis
Veteran

07.04.11
09:21 Uhr
fieldset?
Link zu diesem Beitrag in die Zwischenablage kopieren
caZpa
Veteran

07.04.11
11:21 Uhr
.change wird ausgeführt, sobald das input nicht mehr aktiv ist. Im Prinzip wie .blur
Für Textfelder empfiehlt sich .keyup für radio/checkbox .click

Und versuch mal ob es klappt wenn du nur das Form-Tag außerhalb der Listen packst.
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

07.04.11
11:26 Uhr
hab alles durchprobiert und arbeite jetzt mit mehreren forms, deren daten dann kombiniert gesendet (serialize() kann mehrere forms schlucken) werden.

  1. jQuery('#sort-form input, #sort-form select, #filter-form input, #sort-form select').change( function(e){
  2.  
  3. jQuery("#artefact-thumbs").html('Loading…');
  4.  
  5. // Send the data using post and put the results in a div
  6. jQuery.post( jQuery(this).closest("form").attr('action'), jQuery('#filter-form, #sort-form').serialize(),
  7. function( data ) {
  8. var content = jQuery(data).find('#artefact-thumbs');
  9. jQuery("#artefact-thumbs").html(content);
  10. }
  11. );
  12.  
  13. });
Quelltext in Zwischenablage kopieren
Link zu diesem Beitrag in die Zwischenablage kopieren
Clemens
Veteran

07.04.11
13:01 Uhr
degrades disgracefully ...
weisst du überhaupt was du da machst?
dass man ein formular mit labels nicht richtig formatieren kann halte ich ja mal für absoluten unfug.
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

07.04.11
13:06 Uhr
rafftnix wie meinen?
Link zu diesem Beitrag in die Zwischenablage kopieren
honsey
Gast

07.04.11
13:16 Uhr
danke! danke

in meinem konkreten fall geht es jetzt in erster linie um einen funktionierenden prototypen. performance/sicherheit und son kram müssen erstmal hinten anstehen, um möglichst schnell ein gefühl dafür zu bekommen wie sich das tool anfühlen/aussehen könnte.
wenn das ding dann soweit ist, dass es läuft und (irgendwie) funktioniert, muss da eh jemand ran, der sich mit sowas (richtig) auskennt. )

aber nochmal zum kern meiner frage: forms mit ul und li elementen zu formatieren ist nicht grundlegend verkehrt. vor allem wenn über jedem input-label-paar eine linie in voller breite laufen soll, oder?
Link zu diesem Beitrag in die Zwischenablage kopieren
 
#