Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Подскажите новичку (https://javascript.ru/forum/dom-window/34818-podskazhite-novichku.html)

useruser 20.01.2013 16:25

Подскажите новичку
 
Вопрос, может и глупый, но как сделать перенос курсора в текстовом поле на новую строку? Гугл ответа не дал.
Нужно для цитирования
Часть кода цитирования
insert_text('
Цитата:

Сообщение от ' + username + '
' + theSelection + '

', '');
далее нужно сделать перенос.
\n результата не дало.

Axios 20.01.2013 16:48

так не пробовал?

' + theSelection + '<br/>'

Deff 20.01.2013 17:23

Цитата:

Сообщение от useruser
но как сделать перенос курсора в текстовом поле на новую строку?

Приведите код скрипта и минимально-необходимый HTML

useruser 20.01.2013 17:46

Axios, перенос не в отображении, а в текстовом поле, как будто нажали enter
Вот код
$(document).ready(function () {
    $("div.entry-content").mouseup(function (e) {
        username = $(this).parents("div.post:first").find(".myclass").text();

        var lang = (navigator.language || navigator.systemLanguage || navigator.userLanguage || 'en').substr(0, 2).toLowerCase();
        if (lang == 'ru') {
            quotetext = 'Цитировать выделенное';
        }
        else {
            quotetext = 'Quote selected';
        }

        if (window.getSelection) {
            theSelection = window.getSelection().toString();
        }
        else if (document.getSelection) {
            theSelection = document.getSelection();
        }
        else if (document.selection) {
            theSelection = document.selection.createRange().text;
        }

        $("#addQuote").remove();
        if (theSelection != false && e.which == 1 && username != false) {
            $("body").append('<div id="addQuote" style="left: ' + (e.pageX + 15) + 'px; top: ' + (e.pageY + 15) + 'px;">' + quotetext + '<div class="arrow-up"></div></div>');

            $("#addQuote").click(function () {
                $(this).animate({height:'0', opacity:'0'}, 350, function () {
                    $(this).remove();
                });
//Вот цитирование
                PUNBB.pun_bbcode.insert_text('[quote="' + username + '"]' + theSelection + '[/quote]', '');
//А здесь курсор должен перейти на новую строку
				
            });

            $("#addQuote").oneTime(3000, function () {
                if ($(this).is(':visible')) {
                    $(this).animate({height:'0', opacity:'0', left:'0'}, 350, function () {
                        $(this).remove();
                    });
                }
            });
        }
    });
});

Deff 20.01.2013 17:48

useruser,
:) Где минимально необходимые теги HTML ?

useruser 20.01.2013 18:03

<font class="myclass">Тут имя пользователя</font>
<div class="entry-content">
<p>Тут текст сообщения, которое можно процитировать с помощью скрипта</p>
</div>
<--!Это текстовое поле, куда вставляется цитата -->
<div class="txt-input"><span class="fld-input"><textarea id="fld1" name="req_message" rows="7" cols="95" required spellcheck="true" ></textarea></span></div>

Deff 21.01.2013 17:51

<style>
.myclass{
 font-weight:700;
 color:#0000CC;
 padding:12px;
}
.entry-content{
  padding:12px;
  border:2px dashed #525A5F;
  margin:12px 0;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
function quote(username)
{
	var txt = '';
	
	if (window.getSelection)
	{
		txt = window.getSelection().toString();
	}
	else if (document.getSelection)
	{
		txt = document.getSelection();
	}
	else if (document.selection)
	{
		txt = document.selection.createRange().text;
	}
	
	if (txt == null || typeof(txt) == "undefined" || txt == '')
	{
		//alert('Не выделен текст для цитирования');
		return;
	}
	else
	{
		insert('Сообщение от: [b]' + username + '[b] - ' + txt + '\n');
	}
}

function mozWrap(txtarea, open, close)
{
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	var scrollTop = txtarea.scrollTop;

	if (selEnd == 1 || selEnd == 2) 
	{
		selEnd = selLength;
	}

	var s1 = (txtarea.value).substring(0,selStart);
	var s2 = (txtarea.value).substring(selStart, selEnd)
	var s3 = (txtarea.value).substring(selEnd, selLength);

	txtarea.value = s1 + open + s2 + close + s3;
	txtarea.selectionStart = selEnd + open.length + close.length;
	txtarea.selectionEnd = txtarea.selectionStart;
	txtarea.focus();
	txtarea.scrollTop = scrollTop;

	return;
}

function insert(text, spaces, popup)
{
	var textarea;
	
	if (!popup) 
	{
		textarea = $("#fld1").get(0);
	} 
	else 
	{
		textarea = opener.$("#fld1").get(0);
	}
	if (spaces) 
	{
		text = ' ' + text + ' ';
	}
	
	if (!isNaN(textarea.selectionStart))
	{
		var sel_start = textarea.selectionStart;
		var sel_end = textarea.selectionEnd;

		mozWrap(textarea, text, '')
		textarea.selectionStart = sel_start + text.length;
		textarea.selectionEnd = sel_end + text.length;
	}
	else if (textarea.createTextRange && textarea.caretPos)
	{
		if (baseHeight != textarea.caretPos.boundingHeight) 
		{
			textarea.focus();
			storeCaret(textarea);
		}

		var caret_pos = textarea.caretPos;
		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
	}
	else
	{
		textarea.value = textarea.value + text;
	}
	if (!popup) 
	{
		textarea.focus();
	}
}
$(document).ready(function(){
 $("div.entry-content").mouseup(function () {
   var username=$(this).prev('.myclass').text();
   quote(username);
 });
});
</script>



<font class="myclass">Имя пользователя 1</font>
<div class="entry-content">
<p>Тут текст сообщения, которое можно процитировать с помощью скрипта</p>
</div>

<font class="myclass">Имя пользователя 2</font>
<div class="entry-content">
<p>Тут текст сообщения, которое можно процитировать с помощью скрипта</p>
</div>
<!--textarea  для вставки  -->
<div class="txt-input"><span class="fld-input"><textarea id="fld1" name="req_message" rows="7" cols="95" required spellcheck="true" ></textarea></span></div>


Часовой пояс GMT +3, время: 00:44.