W swoim projekcie potrzebowałem dynamicznie generowanej tabeli aby można było wpisywać dane techniczne. Napisałęm sobie taką prosta fuunkcję w js i pięknie działała dopóki nie umieściłem jej w szablonie smarty. Po umieszczeniu w szablonie zamiast tabeli wypisywał mi się kod na stronie, jak na zrzucie.


Poniżej przedstawiam kod funkcji...
  1. {literal}
  2. <script language="javascript">
  3. <!--
  4.  
  5. function createTabForm () {
  6. var x=document.forms['tab'].x.value;
  7. var y=document.forms['tab'].y.value;
  8.  
  9. tresc = "<input type=\"hidden\" name=\"tab_x\" value=\""+x+"\">";
  10. tresc = tresc +"<input type=\"hidden\" name=\"tab_y\" value=\""+y+"\">";
  11. tresc = tresc +"<table border=\"0\">\n";
  12. for (i=1; i<=x; i++){
  13. tresc = tresc + "<tr>\n";
  14. for (j=1; j<=y; j++)
  15. tresc = tresc +"<td><input type=\"text\" name=\"tab["+i+"]["+j+"]\" style=\"width:50px;\" \"></td>\n";
  16. tresc = tresc +"</tr>\n";
  17. }
  18. tresc = tresc +"</table>";
  19. if (document.layers) {
  20. document.layers.cust.document.write(tresc);
  21. document.layers.cust.document.close();
  22. }
  23. else {
  24. if (document.all) {
  25. cust.innerHTML = tresc;
  26. }
  27. }
  28.  
  29. }
  30. -->
  31. {/literal}


i użycia w szablonie:
  1. <div style=" margin-left:5px;float:left;width:100px;">
  2. Dane techniczne:<br />
  3. <div id="cust"></div>
  4. <form name="tab">
  5. wiersze: <input type="text" name="x" style="width:10px;" /><br />
  6. kolumny: <input type="text" name="y" style="width:10px;" /><br />
  7. <input type="button" value="ok" onclick="createTabForm()" style="width:20px;" /><br />
  8. </form>
  9. </div>


Co robie nie tak? A może ktoś zna lepsze rozwiązanie tego problemu, tzn bez użycia js.
Proszę o pomoc i z góry dzięki smile.gif

Problem tkwił w javascripcie a nie Smartach i już rozwiązany. biggrin.gif
W linijce:
  1. tresc = tresc +"<td><input type=\"text\" name=\"tab["+i+"]["+j+"]\" style=\"width:50px;\" ></td>\n";

na końcu był jeden niepotrzebny cudzysłów.
Temat można zamknąć.