Autor Zpráva
Hobza
Profil *
Vím že to tu bylo mockrát, ale ani jeden z již uvedených příkladů se mi nehodil.

Potřebuju:

> Textarea do které bych stisknutím (odkazu, tlačítka) vložil část kódu.

Nemusí to být nijak složité, ba naopak, čím jednoduší tím lepší.
xmark
Profil
Co třeba otevřít si zdroják téhle stránky a podívat se, jak fungují tlačítka?
Hobza
Profil *
No, podle vseho se tag vlozi pomoci :

<a href="#" onclick="insertTag('b'); return false;"><img src="./img/button_bold.gif" width="23" height="22" title="Tučně (Ctrl + B)" alt="Tučně" border="0"></a>
(například)

a javascript:
function insertText(inserted, cursor)
{
	try { // textarea může být neviditelná, to pak hází chybu, ale špatně se to testuje

	if(inserted != null)
	{
		inserted = inserted.toString().replace(/\r\n?/g, "\n");
		if(typeof cursor == "undefined") cursor = inserted.length;
	}

	var textarea = document.forms["postMsg"].elements["poslText"];
	if(textarea.readOnly) return;
	var scrollTop = textarea.scrollTop;
	var scrollHeight = textarea.scrollHeight;
	textarea.focus();
	
	if(typeof textarea.selectionStart != "undefined")
	{
		var sel = [], st = textarea.value.substr(0, textarea.selectionStart).replace(/\r\n?/g, "\n");
		sel[0] = Math.max(st.length + ((typeof cursor != "number") ? cursor[0] : cursor), 0);
		st += (inserted != null) ? inserted + textarea.value.substr(textarea.selectionEnd).replace(/\r\n?/g, "\n") : textarea.value.substr(textarea.selectionStart).replace(/\r\n?/g, "\n");
		sel[1] = Math.min(sel[0] + ((typeof cursor != "number") ? cursor[1] : 0), st.length);

		if(window.opera)
		{
			// Opera převádí \n na \r\n, kurzor by se netrefil.
			for(var i = 0; i < 2; i++)
			{
				var p = st.substr(0, sel[i]);
				sel[i] += p.length - p.replace(/\n/g, "").length;
			}
		}

		if(inserted != null) textarea.value = st;
		textarea.selectionStart = sel[0];
		textarea.selectionEnd = sel[1];
	}
	else if(typeof document.selection != "undefined")
	{
		var range = document.selection.createRange();
		var start = 0, end = 0;
		if(inserted != null)
		{
			start = end = -inserted.length;
			range.text = inserted;
		}
		else
		{
			end = -range.text.replace(/\r\n?/g, "\n").length;
		}
		
		// nastavení kurzoru na spravné místo / vybrání požadovaného textu
		if(typeof cursor != "number")
		{
			range.moveStart("character", start + cursor[0]);
			range.moveEnd("character", end + cursor[0] + cursor[1]);
		}
		else
		{
			if(start + cursor) range.move("character", start + cursor);
		}
		range.select();
	}
	} catch(exc) {};
	if(window.netscape)
	{
		textarea.scrollTop = scrollTop + (textarea.scrollHeight - scrollHeight);
	}
}


Nic jednodušího a lépe pochopitelného pro začátek by se nenašlo? JavaScript vůbec neumím....
Hobza
Profil *
To aby se to vložilo okolo textu a podobné opičky vůbec nepotřebuju, stačí pouhopouhé vložení mnou určeného textu... (ne tagů)
Chamurappi
Profil
Reaguji na Hobzu:
document.jménoFormuláře.jménoTextarey.value += "vložený text";
Hobza
Profil *
A to mám dát jako funkci insertTag, nebo jako
<a href="#" onclick="document.jménoFormuláře.jménoTextarey.value += "vložený text";"><img src="./img/button_bold.gif" width="23" height="22" title="Tučně (Ctrl + B)" alt="Tučně" border="0"></a>
mckay
Profil
Hobza:
Zkus si přečíst tohle vlákno. V označeném příspěvku to Chamurappi (jen tak mimochodem, mému bratrovi) vysvětluje.
Chamurappi
Profil
Reaguji na Hobzu:
Je to celkem jedno. Ale kód, který jsi napsal, nepojede, protože máš špatně uvozovky uvnitř hodnoty atributu — atribut onclick ti skončí hned za +=. Použij apostrofy.

Za jménoFormuláře dosaď jméno formuláře (tedy to, co máš v atributu name na elementu <form>).
Za jménoTextarey dosaď jméno textového pole (tedy to, co máš v atributu name na elementu <textarea>).


Reaguji na mckaye:
Píše, že nepotřebuje stejné schopnosti, jaké má zdejší <textarea>.
Hobza
Profil *
Díky, našel jsem si tam odkaz na http://www.volny.cz/peter.mlich/jpw/#formulare, zde jsem si našel, co jsem potřeboval...
Chamurappi
Profil
Reaguji na Hobzu:
To, co jsi potřeboval, jsem napsal v příspěvku [#5].
Odkázaný web je napůl vykradený z JPW a napůl vlastní iniciativa nepříliš spolehlivého brouka pytlíka, jehož radám se zpravidla nevyplácí věřit, přestože v případě té <textarey> mu to funguje.
Hobza
Profil *
<script> 
function vlozText(text,blok)
{
text += (blok ? '\n' : ' ');			// prida k textu zalomeni radku nebo mezeru
document.formular.policko.value += text;	// prida na konec textarea
document.formular.policko.focus();		// premisti kurzor do textoveho policka
}
</script>


Omlouvám se že ještě otravuju, ale výše uvedený kód mi hodí ukazatel do textarea před mnou vložený text, nevíte (víte :-D) co zde mám upravit tak, aby mi to ukazatel hodilo za mnou vložený text?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: