Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Копировать и вставить (https://javascript.ru/forum/jquery/9790-kopirovat-i-vstavit.html)

Alexxx 05.06.2010 23:24

Копировать и вставить
 
Как скопировать текст из одного блока в форму?

например из
<div id="copy">text for copy</div>


в

<input type="text" id="paste" value="" size="15" maxlength="128">

Octane 06.06.2010 00:47

document.getElementById("paste").value = document.getElementById("copy").innerHTML;

sysya 06.06.2010 03:53

с помощью jquery http://www.linkexchanger.su/2008/56.html

Alexxx 06.06.2010 23:53

Это всё круто, только мне нужно вставлять текст из дива в текстовую форму. Вот в чем загвоздка...
<div class="copy">Тут копируемый текст!!!</div>

<input type="text" size="20" value="Тут копируемый текст!!!" class="bginput">

Octane 06.06.2010 23:54

И в чем проблема?

Юрий Шу 07.06.2010 10:08

Alexxx,
$(".bginput").val($(".copy").text())

Alexxx 07.06.2010 13:07

Цитата:

Сообщение от Юрий Шу (Сообщение 58186)
Alexxx,
$(".bginput").val($(".copy").text())

не пашет

exec 07.06.2010 13:10

<div id="copy">text for copy</div>
<input type="text" id="paste" value="" size="15" maxlength="128">
<input type="button" value="Скопировать" onclick="document.getElementById('paste').value = document.getElementById('copy').innerHTML;" />

Octane 07.06.2010 13:36

Цитата:

Сообщение от Alexxx
не пашет

Если у вас что-то не работает, приводите описание ошибки и код, здесь телепатов нет, чтобы угадывать, что у вас там «не пашет».

Alexxx 07.06.2010 14:40

Цитата:

Сообщение от exec (Сообщение 58239)
<div id="copy">text for copy</div>
<input type="text" id="paste" value="" size="15" maxlength="128">
<input type="button" value="Скопировать" onclick="document.getElementById('paste').value = document.getElementById('copy').innerHTML;" />

Тупой вопрос: а как что бы без клика это делалось?

exec 07.06.2010 14:50

<div id="copy">text for copy</div>
<input type="text" id="paste" value="" size="15" maxlength="128">
<script type="text/javascript">
document.getElementById('paste').value = document.getElementById('copy').innerHTML;
</script>

Юрий Шу 07.06.2010 16:24

Alexxx, вероятно так
<body onload="document.getElementById('paste').value = document.getElementById('copy').innerHTML;">

<div id="copy">text for copy</div> 
<input type="text" id="paste" value="" size="15" maxlength="128">


UPD. Упс… не увидел ответа.

Alexxx 07.06.2010 17:25

Спасибо!

kuzyara 06.01.2011 14:07

Здравствуйте. У меня аналогичный вопрос.

Мне нужно скопировать в переменную содержимое тега pre. С сишным кодом внутри. С подсвеченным содержимым. С форматированием. Как если бы это сделал пользователь мышкой.

Как это сделать?


зы: в jquery это через text() делается вроде, как самому сделать?
зыы: извините что поднимаю старую тему, но именно в ней я ожидал увидеть ответ...
зыы: в textContent \n заменяется на пробелы ((

monolithed 06.01.2011 14:22

<pre id="pre">
public:
    Array() : len(0), val(NULL) {}
    int len;
};
</pre>
<script type="text/javascript">
document.write('<b>скопировали:</b><br /><pre>'+document.getElementById('pre').innerHTML+'</pre>')
</script>

kuzyara 06.01.2011 14:29

О, если бы всё было так легко!:))

Извините, что сразу не акцентировал выше внимание, текст ПОДСВЕЧЕН.
С помощью syntaxhighlighter например.
А в результате этой подсветки dom безвозвратно унавоживается ((

Как-то же это делается! В том же syntaxhighlighter'е есть кнопка скопировать код!

x-yuri 06.01.2011 22:34

Цитата:

Сообщение от kuzyara
В том же syntaxhighlighter'е есть кнопка скопировать код!

на этом сайте? Тогда это вопрос к Илье

а вообще, чтобы был доступ к исходному коду, его надо просто скопировать куда-нибудь перед запуском syntaxhighlighter'а

kuzyara 07.01.2011 08:21

интересно также что этот же код по двойному клику можно редактировать и при этом вся подсветка убирается!

делай раз:

делай два:


Осталось только понять как можно скопировать подсвеченный текст...

kuzyara 07.01.2011 08:34

/**
 * Quick code mouse double click handler.
 */
function quickCodeHandler(e)
{
	var target = e.target,
		highlighterDiv = findParentElement(target, '.syntaxhighlighter'),
		container = findParentElement(target, '.container'),
		textarea = document.createElement('textarea'),
		highlighter
		;

	if (!container || !highlighterDiv || findElement(container, 'textarea'))
		return;

	highlighter = getHighlighterById(highlighterDiv.id);
	
	// add source class name
	addClass(highlighterDiv, 'source');

	// Have to go over each line and grab it's text, can't just do it on the
	// container because Firefox loses all \n where as Webkit doesn't.
	var lines = container.childNodes,
		code = []
		;
	
	for (var i = 0; i < lines.length; i++)
		code.push(lines[i].innerText || lines[i].textContent);
	
	// using \r instead of \r or \r\n makes this work equally well on IE, FF and Webkit
	code = code.join('\r');
	
	// inject <textarea/> tag
	textarea.appendChild(document.createTextNode(code));
	container.appendChild(textarea);
	
	// preselect all text
	textarea.focus();
	textarea.select();
	
	// set up handler for lost focus
	attachEvent(textarea, 'blur', function(e)
	{
		textarea.parentNode.removeChild(textarea);
		removeClass(highlighterDiv, 'source');
	});
};


Вот исходник этой функции, только я всё-равно механизм не могу понять((

x-yuri 07.01.2011 17:48

а ты пробовал firebug'ом посмотреть, как выглядит разметка этого блока? Хочешь убрать разметку? innerText или textContent. Хочешь разбить на строки? Каждая строка в отдельном элементе находится


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