|
|
|
| Как обратиться к форе и скопировать содержимое <textarea>...</textarea> при клике по номеру id.
при клике сразу по <textarea> все работает нормально
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>1</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0" width="39%" id="table1">
<tr>
<td align="center">Id</td>
<td width="263" align="center"><span lang="ru">Ответ</span></td>
</tr>
<tr>
<td align="center"><a target="top" onClick="window.open('http://ya.ru'); yourForm.createTextRange().execCommand('Copy');"> 308158</a></td>
<td width="263" align="center">
<form><textarea name="yourForm" rows=1 cols=30 onClick="javascript:this.form.yourForm.focus();this.form.yourForm.select(); yourForm.createTextRange().execCommand('Copy');" style="font-size: 8pt">year247391</textarea><br>
<input type="button" onClick="yourForm.createTextRange().execCommand('Copy')" value="Копировать" style="font-size: 10px"></form>
</font></td>
</tr>
<tr>
<td align="center"><a target="top" onClick="window.open('http://ya.ru'); yourForm.createTextRange().execCommand('Copy');"> 308875</a></td>
<td width="263" align="center"><form><textarea name="yourForm" rows=1 cols=30 onClick="javascript:this.form.yourForm.focus();this.form.yourForm.select(); yourForm.createTextRange().execCommand('Copy');" style="font-size: 8pt">ar254391</textarea><br>
<input type="button" onClick="yourForm.createTextRange().execCommand('Copy')" value="Копировать" style="font-size: 10px"></form>
</font></td>
</tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Denisich84
(12.02.2012 в 17:35)
| | 1. А зачем вам здесь вообще тег <form> и даже целых два?
2. Почему у вас два разных TEXTAREA в двух разных формах имеют одно и то же имя yourForm ? Это для прикола? Когда клиент нажимает на любую из двух кнопок "Копировать", браузер должен угадать - о каком из двух yourForm идёт речь? Вы в курсе, что по статистике браузер будет ошибаться ровно половину раз?
3. Почему в одном случае - при клике по TEXTAREA - у вас прописан протокол javascript:, а в другом - при клике по кнопке "Копировать" - не прописан? Почему кнопку-то обидели? Зачем этот javascript: вам вообще нужен? У вас, что, на странице вызываются ещё и на других языках скрипты?
4. Почему в одной строчке кода вы к одному и тому же объекту обращаетесь по-разному? Дважды он у вас this.form.yourForm, а в третий раз - yourForm ? Подсказываю - во всех трёх случаях обращение можно заменить коротким this - это и будет тот самый объект, который вы натужно и по-разному именуете. Сравните:
onClick="javascript:this.form.yourForm.focus();this.form.yourForm.select(); yourForm.createTextRange().execCommand('Copy');"
и
onClick="this.focus();this.select(); this.createTextRange().execCommand('Copy');"
|
5. Вы в курсе, что execCommand() работает только в браузере MSIE и нигде более? Вас это устраивает?
6. Вы в курсе, что createTextRange() также работает только в MSIE? | |
|
|
|
|
|
|
|
для: ЯСА
(12.02.2012 в 17:59)
| | 1. кнопка копировать стоит в форме и знает из какой формы и что ей нужно копировать))
поторопился наверно вот и написал так)
2 конечно если я буду кликать по ссылке и брать данные из разных форм то у них должны быть свое имя. Тут может даже и не быть кнопок, просто это осталось от старого примера,
смыс в том что мне нужно сделать клик по номеру ID по цыфре 308158 чтобы открылась ссылка в данном случае яндекс и нужно чтобы скопировалось содержимое TEXTAREA т.е. year247391., чтобы одним действием совершить два события)
3. Да в курсе, не устраивает ну а что делать ни кто же не поможет и не напишет мне код. | |
|
|
|
|
|
|
|
для: Denisich84
(12.02.2012 в 18:50)
| | Ответьте ещё на один вопрос - в зависимости от вашего ответа я или смогу помочь вам с кодом, или не смогу:
Положим, при нажатии на что-то у вас открылось окно Яндекса и одновременно с этим какие-то данные скопировались в буфер обмена. Что вы с этими данными из буфера памяти далее делать предполагаете? | |
|
|
|
|
|
|
|
для: ЯСА
(12.02.2012 в 19:10)
| | Копироваться будет только текст а потом просто этот текст из буфера буду руками вставлять на другой странице в другое подобное окно либо в блокнот это уже не сильно важно. | |
|
|
|
|
|
|
|
для: Denisich84
(12.02.2012 в 19:15)
| | Ага.
Я-то думал, что скопированый текст нужен вам для вставки в строку поиска Яндекса, который открывается в новом окне. Тогда бы я смог помочь непосредственно.
Но раз - нет, тогда подсказываю: кроссбраузерного решения на JavaScript по использованию буфера обмена НЕ СУЩЕСТВУЕТ.
Можно решить проблему кроссбраузерно, используя флеш.
И это - единственный способ. См. здесь - http://apofig.blogspot.com/2010/02/javascript.html | |
|
|
|
|
|
|
|
для: ЯСА
(12.02.2012 в 19:22)
| | Посмотрю) | |
|
|
|
|
|
|
|
для: Denisich84
(12.02.2012 в 20:34)
| | фигня какая то ни че не работает! ну а если сделать только для эксплорера? при нажатии на кнопку копировать текст же копируется. Что нельзя как то прописать onClick - ку функцию чтобы он скопировал из формы текст?
даже если вставить ссылку в форму тоже все работает и копирование и открытие окна) | |
|
|
|
|
|
|
|
для: Denisich84
(12.02.2012 в 21:00)
| | Как я понял, вам тогда вовсе не нужны кнопки "Копировать", так?
Итак, описываю задачу:
1. Имеете в каждой строке таблицы слева - текст, содержащий ID, с правой стороны - TEXTAREA с каким-то содержимым.
2. При клике по тексту слева: а) открывается новое окно и б) текущее содержимое заносится в буфер памяти.
3. И всё это будет работать только в MSIE.
Верно я понял задачу?
Если верно, то могу нарисовать - это несложно.
PS. Один только вопросик остаётся - положим, клиент кликнул, окно со стартовой страницей Яндекса открылось, данные из буфера он как-то где-то использовал... а затем, не закрывая окна с Яндексом, вернулся к основному окну и кликнул по другому ID - надо ещё одно новое окно с Яндексом открывать? Или же в уже открытое по прошлому клику окно заново помещать стартовую страницу Яндекса? | |
|
|
|
|
|
|
|
для: ЯСА
(12.02.2012 в 21:48)
| | Да вы все верно поняли)
затем, не закрывая окна с Яндексом, вернулся к основному окну и кликнул по другому ID - надо ещё одно новое окно с Яндексом открывать! | |
|
|
|
|
|
|
|
для: Denisich84
(13.02.2012 в 22:13)
| |
<html>
<head>
<script>
function woB (x)
{
while (x.tagName != 'TD') x = x.parentNode;
with (x.nextSibling.firstChild) {select (); createTextRange ().execCommand ('Copy')}
window.open ('http://ya.ru', '_blank');
}
//Любителям писать "красивые" коды (с пробелами, табуляцией, отступами...) для надёжности
//firstChild следует заменить на getElementsByTagName ('TEXTAREA') [0]
</script>
</head>
<body>
<table border>
<tr><th>ID</th><th>Answer</th></tr>
<tr><td onclick="woB (this)">111</td><td><textarea>AAA</textarea></td></tr>
<tr><td onclick="woB (this)">222</td><td><textarea>BBB</textarea></td></tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: ЯСА
(13.02.2012 в 22:47)
| | Все конечно хорошо, но при клике по тексту слева кликая по разным ID каждый раз открывается окно с яндексом, а мне нужно чтобы при клике по разным ID открывались окна с разными страницами к примеру в первной строчке яндекс, во второй строчке майл и так далее.
Понимаю мой косяк) но я не думал что вы все ID привяжите к одному окну) | |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 06:45)
| | Я в этом можно сказать не шарю, у меня получилось так
<html>
<head>
<script>
function woB1 (x)
{
while (x.tagName != 'TD') x = x.parentNode;
with (x.nextSibling.getElementsByTagName ('TEXTAREA') [0]) {select (); createTextRange ().execCommand ('Copy')}
window.open ('http://ya.ru', '_blank');
}
</script>
<script>
function woB2 (x)
{
while (x.tagName != 'TD') x = x.parentNode;
with (x.nextSibling.getElementsByTagName ('TEXTAREA') [0]) {select (); createTextRange ().execCommand ('Copy')}
window.open ('http://mail.ru', '_blank');
}
</script>
</head>
<body>
<table border>
<tr><th>ID</th><th>Answer</th></tr>
<tr><td onclick="woB1 (this)">111</td><td><textarea>AAA</textarea></td></tr>
<tr><td onclick="woB2 (this)">222</td><td><textarea>BBB</textarea></td></tr>
<tr><td onclick="woB3 (this)">333</td><td><textarea>ССС</textarea></td></tr>
</table>
</body>
</html>
|
Может можно как то упростить? | |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 07:39)
| | Можно:
<html>
<head>
<script>
function woB (x, y)
{
while (x.tagName != 'TD') x = x.parentNode;
with (x.nextSibling.getElementsByTagName ('TEXTAREA') [0])
{select (); createTextRange ().execCommand ('Copy')}
window.open ('http://' + y, '_blank');
}
</script>
</head>
<body>
<table border>
<tr><th>ID</th><th>Answer</th></tr>
<tr><td onclick="woB (this, 'yandex.ru')">111</td><td><textarea>AAA</textarea></td></tr>
<tr><td onclick="woB (this, 'mail.ru' )">222</td><td><textarea>BBB</textarea></td></tr>
<tr><td onclick="woB (this, 'mozga.net')">333</td><td><textarea>CCC</textarea></td></tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: ЯСА
(14.02.2012 в 08:08)
| | Спасибо все работает) | |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 08:54)
| | Чет опять не могу догнать
а если у меня 3 или 4 столбца почему он не капирует???
например таблица
<table border>
<tr><th>ID</th><th>Answer</th></tr>
<tr><td onclick="woB (this, 'yandex.ru')">111</td><td>AAA</td><td><textarea>AAA</textarea></td></tr>
<tr><td onclick="woB (this, 'mail.ru' )">222</td><td>AAA</td><td><textarea>BBB</textarea></td></tr>
<tr><td onclick="woB (this, 'mozga.net')">333</td><td>AAA</td><td><textarea>CCC</textarea></td></tr>
</table>
|
| |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 13:12)
| | А что конкретно скрипт должен в этом случае копировать?
Положим, нажал юзер на id=111, т.е. на самую верхнюю левую ячейку.
Напишите здесь нужную вам строку, которая должна оказаться в клипборде юзера.
ААА?
АААААА?
ААА ААА?
ААА+ААА?
ААА, ААА?
ААА и ААА?
... | |
|
|
|
|
|
|
|
для: ЯСА
(14.02.2012 в 15:23)
| | все тоже самое как и было кликаю в строчке по Id и копирую содержимое <textarea>AAA</textarea>
просто если добавляю еще столбики в строчке то ни чего не работает
Положим, нажал юзер на id=111 должно скопироваться <textarea>AAA</textarea> | |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 16:18)
| | Ели бы добавили столбик с правого края, то работало бы.
Но вы умудрились втюхать столбик между ID и Answer.
А логика скрипта исходила из того, что <TEXTAREA> находится в соседнем справа с ID столбце.
Я, конечно, напишу вам скрипт и для этого вашего случая.
Только предупредите сразу - а перед столбцом с ID вам не захочется ещё один (или несколько) столбцов вставить?
А между столбцом с ID и столбцом с <TEXTAREA> вам не захочется втюхать не просто несколько столбцов, а столбцов тоже с <TEXTAREA>, но не с такими, содержание которого надо запоминать, а с другими, содержание которых к скрипту отношения не имеет?
Ответьте уж, пожалуйста.
Чтобы я сразу понял всю бесполезность моих усилий. :-(( | |
|
|
|
|
|
|
|
для: ЯСА
(14.02.2012 в 18:29)
| | Вот такая будет таблица. На код не обращай внимания его просто так скопировал не знаю что в него попало, просто как будет выглядеть таблица
<html>
<head>
<script>
function woB (x, y)
{
while (x.tagName != 'TD') x = x.parentNode;
with (x.nextSibling.getElementsByTagName ('TEXTAREA') [0])
{select (); createTextRange ().execCommand ('Copy')}
window.open ('http://' + y, '_blank');
}
</script>
</head>
<body>
<table border>
<tr><th><span lang="ru">№</span></th><th>ID</th><th><span lang="ru">Цена</span></th><th>
<span lang="ru">Время</span></th><th>Answer</th></tr>
<tr><td onclick="woB (this, 'yandex.ru')"><span lang="ru">1</span></td><td onclick="woB (this, 'yandex.ru')">111</td><td>
<span lang="ru">1</span></td><td><span lang="ru">24</span></td><td><textarea>AAA</textarea></td></tr>
<tr><td onclick="woB (this, 'mail.ru' )"><span lang="ru">2</span></td><td onclick="woB (this, 'mail.ru' )">222</td><td>
<span lang="ru">2</span></td><td><span lang="ru">24</span></td><td><textarea>BBB</textarea></td></tr>
<tr><td onclick="woB (this, 'mozga.net')"><span lang="ru">3</span></td><td onclick="woB (this, 'mozga.net')">333</td><td>
<span lang="ru">3</span></td><td><span lang="ru">24</span></td><td><textarea>CCC</textarea></td></tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Denisich84
(14.02.2012 в 19:16)
| |
<script>
function woB (x, y)
{
while (x.tagName != 'TR') x = x.parentNode;
for (var obj = x.cells, j = 0, lj = obj.length; j < lj; j++)
if (obj [j].getElementsByTagName ('TEXTAREA').length) break;
with (obj [j].getElementsByTagName ('TEXTAREA') [0])
{select (); createTextRange ().execCommand ('Copy')}
window.open ('http://' + y, '_blank');
}
</script>
|
| |
|
|
|
|
|
|
|
для: ЯСА
(15.02.2012 в 10:19)
| | Спасибо вроде работает если я опять че неть не выдумаю)))) | |
|
|
|