ďťż

[JS] Informacje z checkboxa do formularza

       

Podstrony


telcocafe

Witam,
nie znam się na JavaScripcie. Potrzebuję prostej rzeczy w nim napisane, proszę o pomoc, wskazówkę, radę, cokolwiek z tym związane. Dla kogoś kto miał z nim dłużej do czynienia zapewne nie będzie to problem.

Powiedzmy, że mam kilka checxboxów, każdy ustawiony ma name='radio1', mogę wić wybrać tylko jedną rzecz z iluś tam wyborów. I jest przycisk (ikonka): WSTAW. Chcę aby po kliknięciu na nią Value danego checkboxa pojawiło się w danym textarea.

Jak to zrobić?

Proszę o pomoc.



po pierwsze js obsługuje głównie na id a nie na nazwie

<input type="radio" name="radio1" id ="radio1_1" value="test1" onclick="PrzerzucWartosc(1)">radio 1 <input type="radio" name="radio1" id ="radio1_2" value="test2" onclick="PrzerzucWartosc(2)">radio 2 <input type="radio" name="radio1" id ="radio1_3" value="test3" onclick="PrzerzucWartosc(3)">radio 3 <textarea id="txt_1"></textarea> <script type="text/javascript" language="javascript"> function PrzerzucWartosc(i){ document.getElementById('txt_1').value = document.getElementById('radio1_'+i).value; } </script>

i to powinno Ci prawidłowo zadziałać w każdej przeglądarce
Użytkownik j-mail edytował ten post 11 lipiec 2008, 11:48
Coś mi Smarty szaleje w połączeniu z Javascriptem ;/

Wywala błąd:

Fatal error: Smarty error: [in news_add.tpl line 36]: syntax error: unrecognized tag: document.getElementById('naglowek').value += document.getElementById('radio1_'+i).value; (Smarty_Compiler.class.php, line 436) in /home/zycien/domains/zycienastolatkow.pl/public_html/pawlak/libs/Smarty.class.php on line 1088

A fragment, któy to powoduje to:

<script type="text/javascript" language="javascript"> function PrzerzucWartosc(i){ document.getElementById('naglowek').value += document.getElementById('radio1_'+i).value; } </script>

Próbowałem różnych rzeczy i nic ;/
A w pliku kilka innych rzeczy w JS działa.

Użyj {literal}{/literal}



Zamiast Smarty polecam polski projekt Open Power Template. Znacznie bardziej rozbudowany. :) Łatwo otrzymasz wsparcie od producentów na forum biblioteki.
Użytkownik Ferrari edytował ten post 11 lipiec 2008, 21:57
Ach, jak mogłem zapomnieć o literal, dzięki ;]
Ferrari - pewnie w przyszłości potestuję, słyszałem już o kilku ciekawych alternatywach do Smarty ;]

Ale jednak na razie dalej mam problem z tym skryptem.

Zamiast "=" dałem "+=" żeby mie nie zastępowało to co jest w formularzu a do niego dodawało. A więc kod wygląda tak:

<script type="text/javascript" language="javascript"> function PrzerzucWartosc(i){ document.getElementById('naglowek').value += document.getElementById('radio1_'+i).value; } </script>

Jednak chciałbym aby kod dodawał się tam gdzie jest aktywny wskaźnik (kursor), a nie na sam koniec formularza.
Jak to zrobić?

Zrobiłem tak, że jak klikam gdzie kursorem, to później mi dodaje w tym miejscu. Ale kursor nie ustawia się na końcu tego co się dodaje i później ponownie daje na koniec, a powinno być tak, że ustawia się na koniec tego co jest napisane.

Jak to można naprawić?
<input type="radio" name="radio1" id ="radio1_233" value="<img src=http://www.slasknet.com/sklad/sklad08/sklad08wiosna/wolczek.jpg border=0 width=75 height=90 align=left>" onclick="PrzerzucWartosc(233)"> <script type="text/javascript" language="javascript"> D=document;onclick=function(){F=D.getElementById('naglowek')} function PrzerzucWartosc(x){D.selection?(F.focus(),D.selection.createRange().text=D. getElementById('radio1_'+x).value):(F.selectionstart||F.selectionstart==' 0')?F.value=F.value.substring(0,F.selectionstart)+D.getElementById('radio1_' +x).value+F.value.substring(F.selectionend,F.value.length):F.value+=D.getElementById( 'radio1_'+x).value} </script>

Jeśli dobrze rozumiem jaki efekt chcesz uzyskać: selectionstart odpowiada za pozycję kursora testu. Pobaw się długością ciągów i ową pozycją.

Próbowałem. Ale ni jak mi nie wychodzi.

Napiszę co próbowałem i czego nie jestem pewien. Może ktoś znalazłby błąd w moim rozumowaniu.

Całą akcję trzeba wykonać już po tym jak F.value dodało początek tekstu do zaznaczenia, tekst do dodania oraz to co było od końca zaznaczenia do końca formularza.

Tak więc ustawiony po tym jest na końcu. A cały problem tkwi w tym aby był po teksćie, który został dodany.

Tak więc powinienem ustalić coś takiego: (niech MyField będzie textarea, a MyValue dodawaną wartością)
myField.selectionstart += myValue.value.length; myField.selectionend += myValue.value.length;
lub
myField.selectionstart = myValue.selectionstart +myValue.value.length; myField.selectionend = myValue.selectionend +myValue.value.length;
W oba przypadkach nie działa.

Robisz tak: pobierasz wartość selectionstart, dodajesz do tego długość wstawionego tekstu i przypisujesz obiektowi otrzymaną wartość.obiekt.selectionstart += nowy.length;

Jeśli chcesz wstawić tekst do TEXTAREA, użyj tej funkcji: http://www.unit1.pl/pb-832 - początkowo trochę zerżnąłem kod z PHP-Fusion. Później poprawiłem go i zoptymalizowałem. :) Jako pierwszy parametr musisz podać obiekt, czyli np. document.forms[0].nazwaTextarea czy document.getElementsById('id_textarea').

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.