Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

JS функция за вмъкване на текст в по средата на textarea.

Featured Replies

Некой може ли да ми предложи някаква JS функция, която да вмъква текст там където сочи в момента показалеца, а не винаги в края му. Трябва ми за емотиконки. Иначе имам такава функция за селектиран текст, но искам вече знаете за какво.

Ето и с какво разполагам аз ако ще ви помогне:

За вмъкване в края на textarea:

function smilestyle(smilenumber) {

	var txtarea = document.editform.message;


	txtarea.focus();

	txtarea.value += smiletags[smilenumber];

	txtarea.focus();

	return;

}
За вмъкване между селектиран текст и пак в края на textarea:
function bbstyle(bbnumber) {

	var txtarea = document.editform.message;


	txtarea.focus();

	donotinsert = false;

	theSelection = false;

	bblast = 0;


	if (bbnumber == -1) { // Close all open tags & default button names

		while (bbcode[0]) {

			butnumber = arraypop(bbcode) - 1;

			txtarea.value += bbtags[butnumber + 1];

			buttext = eval('document.editform.addbbcode' + butnumber + '.value');

			eval('document.editform.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');

		}

		imageTag = false; // All tags are closed including image tags :D

		txtarea.focus();

		return;

	}


	if ((clientVer >= 4) && is_ie && is_win)

	{

		theSelection = document.selection.createRange().text; // Get text selection

		if (theSelection) {

			// Add tags around selection

			document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];

			txtarea.focus();

			theSelection = '';

			return;

		}

	}

	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))

	{

		mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);

		return;

	}


	// Find last occurance of an open tag the same as the one just clicked

	for (i = 0; i < bbcode.length; i++) {

		if (bbcode[i] == bbnumber+1) {

			bblast = i;

			donotinsert = true;

		}

	}


	if (donotinsert) {		// Close all open tags up to the one just clicked & default button names

		while (bbcode[bblast]) {

				butnumber = arraypop(bbcode) - 1;

				txtarea.value += bbtags[butnumber + 1];

				buttext = eval('document.editform.addbbcode' + butnumber + '.value');

				eval('document.editform.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');

				imageTag = false;

			}

			txtarea.focus();

			return;

	} else { // Open tags


		if (imageTag && (bbnumber != 14)) {		// Close image tag before adding another

			txtarea.value += bbtags[15];

			lastValue = arraypop(bbcode) - 1;	// Remove the close image tag from the list

			document.editform.addbbcode14.value = "Изображение";	// Return button back to normal state

			imageTag = false;

		}


		// Open tag

		txtarea.value += bbtags[bbnumber];

		if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag

		arraypush(bbcode,bbnumber+1);

		eval('document.editform.addbbcode'+bbnumber+'.value += "*"');

		txtarea.focus();

		return;

	}

	storeCaret(txtarea);

}

  • Автор

Много интересно точно този го мъчих преди, но нищо не стана.

Ето как аз мисля че трябва да стане от тази функция:

function smilestyle(smilenumber) {

	var txtarea = document.editform.message;


	txtarea.focus();

	txtarea.value += smiletags[smilenumber];

	txtarea.focus();

	return;

}
Така трябва да изглежда ама нещо не става:
function smilestyle(smilenumber) {

var txtarea = document.editform.message;

//IE support

if (document.selection) {

txtarea.focus();

sel = document.selection.createRange();

sel.text = smiletags[smilenumber];

}

//MOZILLA/NETSCAPE support

else if (txtarea.selectionStart || txtarea.selectionStart == ‘0′) {

var startPos = txtarea.selectionStart;

var endPos = txtarea.selectionEnd;

txtarea.value = txtarea.value.substring(0, startPos)

+ smiletags[smilenumber]

+ txtarea.value.substring(endPos, txtarea.value.length);

} else {

txtarea.value += smiletags[smilenumber];

}

}

Малко да ме насочите??? :? че нещо с JS не съм много добър

В кода от страницата която ти дадох имаше грешки, заради които не работеше коректно.

Ето коригиран и работещ код :

<html>

<head>



<script type="text/javascript">


function insertAtCursor(myField, myValue) {

//IE support

if (document.selection) {

myField.focus();

sel = document.selection.createRange();

sel.text = myValue;

}

//MOZILLA/NETSCAPE support

else if (myField.selectionStart || myField.selectionStart == 0) {

var startPos = myField.selectionStart;

var endPos = myField.selectionEnd;

myField.value = myField.value.substring(0, startPos)+ myValue+ myField.value.substring(endPos, myField.value.length);

} else {

myField.value += myValue;

}

}



</script>


<style type="text/css">


</style>

</head>

<body>

<form name="test">


<textarea name="testinp" cols="85" rows="15" wrap="VIRTUAL"> This is a test </textarea>


<input type="button" onclick="insertAtCursor(this.form.testinp,':)');" value="Insert it">

</form>

</body>

</html>

Редактирано от Ken (преглед на промените)

  • Автор

Мерси много стана номера.

Сега искам друго да питам.

Значи като се използват тези JS функции за форматиране на текста в textarea кажете начин , по който показалеца в текста да остава на същото място а не да отива в края му а самия текст да се превърта в началото и така човек като форматира дълъг текст му е много неудобно?

Мисля си че трябва с функцията focus() да стане и тя се ползва, но като txtarea.focus(); и няма ефект. Може ли да се използва вътре в обекта в самия текст и как?

Мерси предварително!

Значи сега гледам че проблема е само при Mozilla. Имам IE7 и там няма превъртане на текста, нз как е за IE6. Идеи как да го оправя за Mozilla-та.

Също така имам един друг проблем и вместо да правя друга тема ще попитам тук. Значи по-рано имаше един скрипт за качване на снимки и оразмеряването им през http. Значи проблема е следния. При качване на снимка чието име е на кирилица то се записва в сървъра и няма проблем при четенето му от Mozilla или файловия мениджър на хостинга. Но има проблем под IE и Opera които не променят името на файала както мозила.

Например изображение на български под мозила показва директорията му като :

http://pmg-blg.com/onlineschool/images/uro...FE%F2%FE%ED.jpg

а IE7 и Opera като: http://pmg-blg.com/onlineschool/images/uro...нът%20Тютюн.jpg

Предполагам проблема е при дефинирането на директорията. Иначе това е само за тези изображения дето са кчени така. Иначе ако се направи проста страничка на html с код:

<img src=\"http://pmg-blg.com/onlineschool/images/uroci/Романът Тютюн.jpg\" /> и файлът е качен през FTP а не през HTTP и този код за преоразмеряване и запазване на изображенията няма отклонения.

Видях че подобен проблем има и при една готова система - Coppermine Photo Gallery, къето същото ако са качени изображения на кирилица, където даже и Mozilla не ги показва - http://pmg-blg.com/gallery/displayimage.ph...um=4&pos=11

Можете ли да ми кажете на какво може да се дължи този проблем?

  • Автор

Някой има ли някаква идея как да оправя проблема с превъртането на текста във textarea под Mozilla ???

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.