Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: JavaScript: Javascript: Tekstin lisääminen formiin

Sivun loppuun

hauki [06.03.2008 14:37:26]

#

Tällä tavalla pystyy lisäämään tekstiä textarean loppuun, mutta tietäiskö joku miten tekstin sais siihen kohtaan, jossa kursori on.

<html>
<body>
<form  method="post" name="formi">
<script type="text/javascript">

        function insertext(text){
        document.formi.teksti.focus();
        document.formi.teksti.value+=" "+ text;
        document.formi.teksti.focus();

        }
        </script>
        <textarea cols="40" rows="6"  name="teksti"></textarea>
        <a href="javascript:insertext('Teksti')">Lisää teksti</a>
        </form>

</body>
</html>

hauki [06.03.2008 15:55:28]

#

Vai onnistuisko vaikka php:llä

Teuro [06.03.2008 16:17:21]

#

Eipä voi tehdä php:ä, koska php ei tiedä missä kursori on. Voisi tuon tietty tehdä onFocus() funktiolla, mutta se tekisi lisäyksen aina, kun hiirellä tökkää inputtia. Merri luultavasti keksii ongelmaan säällisen ratkaisun.

Pekka Karjalainen [07.03.2008 09:22:51]

#

Nettihaulla löytyi koodia, jonka väitetään kertovan, missä kohdassa kursori (tässä yhteydessä caret) on.

http://blog.vishalon.net/Post/57.aspx

Tuota saattaa pystyä soveltamaan. Uuden tekstin voi lisätä funktion kertomaan paikkaan textarean value-kenttään. (En nyt kerkeä itse testata, mistä pahoitteluni.)

hauki [07.03.2008 19:13:23]

#

On tuolla tosiaan neuvottu miten kursorin paikan saa selville, mutta se ei näyttäisi ratkaisevan itse ongelmaa, koska

document.formi.teksti.value+=" "+ text

lisää tekstin jokatapauksessa loppuun. Ilmeisesti pitäisi osata jakaa valuen vanha teksti kahteen kursorin kohdalta, mutta taitaa olla ainakin mulle liian hapokasta.

Pekka Karjalainen [07.03.2008 23:11:26]

#

string.slice on mahdollinen ratkaisu.

<html>
<body>

<script type="text/javascript">

var str ="Ohjputka";
var ins ="elmointi";
var beg = str.slice(0, 3);
var end = str.slice(3);
document.write(beg + ins + end);
</script>

</body>
</html>

slice-funktiota voi kutsua kahdella eri tavalla. Alku otetaan nollasta siihen indeksiin kahdella argumetnilla ja loppu taas saadaan yhdellä argumentilla siitä indeksistä. Kokeile eri arvoja, niin toiminta selviää helposti.

Jos joku tietää luontevamman tavan, kertokaa ihmeessä. Just nyt ei ole paras aika JavaScriptailla...

neau33 [08.03.2008 18:24:39]

#

Heippa hauki!

tässä sulle viritys...

<html><head><title>test</title>
<script>
var alku; var loppu;
function funktio(){
 var alku = ""; var loppu = "";
                                      //Alt + 255
 if (document.all('txtArea').value.indexOf(' ') == -1
 && document.all('txtArea').value.length > 0) {
 str=(typeof(str)=='string')?str: ' '; // välilyönti
 sel = document.selection.createRange();
 sel.text = ' '; //Alt + 255
 loppu = document.all('txtArea').value.substring(document.all('txtArea').value.indexOf(' '));
 alku = document.all('txtArea').value.replace(loppu, "");
                  //Alt + 255
 loppu = loppu.replace(" ", "");
 document.all('txtArea').value = alku +
 document.all('txt').value + loppu;
 }
}
</script></head><body>
<input type="text" id="txt"/><br>
<textarea id="txtArea" onclick="funktio()">
</textarea></body></html>

hauki [08.03.2008 19:32:13]

#

Ehdin jo Kopeekkan avulla rueta väsäämään tällästä ja vaikuttas toimivan

<html>
<body>
<form  method="post" name="formi">
<script type="text/javascript">

        function insertext(text){
        var alkuteksti=document.formi.teksti.value;
        var alku=alkuteksti.slice(0, (etsikursori('teksti')));
        var loppu=alkuteksti.slice(etsikursori('teksti'));
        document.formi.teksti.focus();
   		 document.formi.teksti.value=alku + text + loppu;
              }

function etsikursori (ctrl) {

	var paikka = 0;
	// IE Support
	if (document.selection) {

		document.formi.teksti.focus ();
		var Sel = document.selection.createRange ();

		Sel.moveStart ('character', -document.formi.teksti.value.length);

		paikka = Sel.text.length;
	}
	// Firefox support
	else if (document.formi.teksti.selectionStart || document.formi.teksti.selectionStart == '0')
		paikka = document.formi.teksti.selectionStart;

	return (paikka);
}




</script>
        <textarea cols="40" rows="6"  name="teksti"></textarea>
        <a href="javascript:insertext('Teksti')">Lisää teksti</a>
        </form>

</body>
</html>

Tällä aion tehdä pikanäppäimiä esim. hyperlinkin lisäykseen. Kiitti molemmille avusta, tutkin myös ton Nean vinkin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta