Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Автоматический разброс содержимого буфера по таблице
 
 автор: Sfinks   (02.11.2012 в 10:41)   письмо автору
 
 

Допустим, есть разметка:
<!--<?-->
<
table>
   <
tr>
      <
td><input type="text" name="imya[1]" id="imya1"></td>
      <
td><input type="text" name="fami[1]" id="fami1"></td>
      <
td><input type="text" name="otch[1]" id="otch1"></td>
   </
tr>
   <
tr>
      <
td><input type="text" name="imya[2]" id="imya2"></td>
      <
td><input type="text" name="fami[2]" id="fami2"></td>
      <
td><input type="text" name="otch[2]" id="otch2"></td>
   </
tr>
   <
tr>
      <
td><input type="text" name="imya[3]" id="imya3"></td>
      <
td><input type="text" name="fami[3]" id="fami3"></td>
      <
td><input type="text" name="otch[3]" id="otch3"></td>
   </
tr>
</
table>

и в буфере CSV-файл:
Иванов;Иван;Иванович;
Петров;Пётр;Петрович;
Сидоров;Сидор;Сидорович;

Как сделать, чтобы, если фокус находится в id="imya1" и произведена попытка вставки из буфера любым способом (хоть Ctrl+V, хоть Shift+Insert, хоть мышкой и т.п.), то значения разбросались по соответствующим input'ам?

  Ответить  
 
 автор: confirm   (02.11.2012 в 11:24)   письмо автору
 
   для: Sfinks   (02.11.2012 в 10:41)
 

Вы для себя это делаете или для пользователей?

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 13:11)   письмо автору
 
   для: confirm   (02.11.2012 в 11:24)
 

И для себя, и для пользователей.
Но пользователи подконтрольные - с зарплатой и штрафами за некорректное использование =))

  Ответить  
 
 автор: confirm   (02.11.2012 в 13:41)   письмо автору
 
   для: Sfinks   (02.11.2012 в 13:11)
 

А если для пользователей, то каким образом вы обеспечите работу с буфером обмена во всех браузерах? Кто, что и откуда копирует в буфер?
Копирование мышкой... так она не копирует ничего, мышкой можно выбрать только пункт этот из системного меню браузера, а это системное событие (сообщение системы), и документ о нем вообще ничего не подозревает.
По иному нельзя подойти к решению?

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 14:12)   письмо автору
 
   для: confirm   (02.11.2012 в 13:41)
 

> Кто, что и откуда копирует в буфер?
Вот Вы любите на отстраненные темы поговорить =)
Откуда скажу - оттуда и будут копировать. Будут копировать не правильно - не будет работать. Не будет работать, будут вбивать вручную. Будут вбивать вручную - ниче не успеют сделать. Ниче не успеют - ШТРАФ, ВЫГОВОР, УВОЛЬНЕНИЕ! =))

> а это системное событие (сообщение системы), и документ о нем вообще ничего не подозревает.
Вот я и не знал, подозревает или нет. А window тоже не подозревает?

Тогда, допустим, только по Ctrl+V....
Задача сводится к:
Как это перехватить, отменить системную вставку и получить содержимое буфера в переменную?

  Ответить  
 
 автор: Deed   (02.11.2012 в 14:19)   письмо автору
 
   для: Sfinks   (02.11.2012 в 14:12)
 

http://stackoverflow.com/questions/6413036/get-current-clipboard-content
http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 14:34)   письмо автору
 
   для: Deed   (02.11.2012 в 14:19)
 

Спасибо, почитаю.

  Ответить  
 
 автор: confirm   (02.11.2012 в 14:47)   письмо автору
 
   для: Sfinks   (02.11.2012 в 14:12)
 

Что значит отстраненные? Копировать со страницы - тогда зачем вообще нужно копирование, если в этом случае можно просто выбирать готовое из того же массива?
Копировать из другой программы - тоже вопросы.
Ведь можно ничего не перехватывать, потому и...

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 19:03)   письмо автору
 
   для: confirm   (02.11.2012 в 14:47)
 

А я думал вы о том, как я добьюсь от пользователей именно того, что мне нужно =)
Ладно, уже не важно. Ответов уже достаточно =)

  Ответить  
 
 автор: confirm   (03.11.2012 в 04:32)   письмо автору
 
   для: Sfinks   (02.11.2012 в 19:03)
 

Нет, не об этом. Я как раз сначала и задаю вопрос, в данном случае себе - зачем это нужно? Неужели прямо на странице - Петр;Петрович;Петров, которое потом в буфер обмена помещать? Что-то не очень то "опрятно". А если нет, то причем тут вообще буфер обмена, и нужно ли копирование вообще?

  Ответить  
 
 автор: ЯСА   (03.11.2012 в 10:53)   письмо автору
 
   для: confirm   (03.11.2012 в 04:32)
 

пытаетесь опровергнуть академика Павлова?
тот же убедительно доказал - на примере братьев наших меньших - что пока не лизнёшь горячую сковородку, никому не веришь, что облизывать её не стоит...
:)

  Ответить  
 
 автор: confirm   (03.11.2012 в 11:09)   письмо автору
 
   для: ЯСА   (03.11.2012 в 10:53)
 

:)

Читаю - "и в буфере CSV-файл...". Не может быть в буфере никаких файлов, тем более CSV и прочих форматов, буфер хранит данные в своем формате. Но это можно простить по незнанию, но что пытаются заставить делать пользователя, если речь идет о файле определенного формата, который кто-то, не понятно кто, скопировал в буфер обмена? Начинаешь представлять это в рамках HTML и тебя начинает бросать в легкий ступор.

Я сторонник того, что сперва думаем надо ли считать в данном случае, а уже как считать, в столбик или иначе, это второстепенное и является действием второго плана. Наоборот, это уже абсурд. )

  Ответить  
 
 автор: Sfinks   (03.11.2012 в 11:23)   письмо автору
 
   для: confirm   (03.11.2012 в 11:09)
 

ЯСА прав.
В подавляющем большинстве случаев это трата времени и Вашего и моего. Т.к. если человек не спрашивает "как лучше сделать (решить, организовать)", а просит реализацию конкретной задачи, значит он уже решил, что ему надо именно так. И переубедить его сможет только практика =)
Я уже давно отвечая на форуме руководствуюсь именно этим принципом.

  Ответить  
 
 автор: confirm   (03.11.2012 в 11:25)   письмо автору
 
   для: Sfinks   (03.11.2012 в 11:23)
 

А смыл думать над задачей, которая в итоге в помойку уйдет? Вот я и не трачу время, как вы выражаетесь. )

  Ответить  
 
 автор: ЯСА   (02.11.2012 в 14:18)   письмо автору
 
   для: Sfinks   (02.11.2012 в 10:41)
 

формат у вас смешной

в CSV-файле -- фамилия;имя;отчество
а в ячейке таблицы -- имя;фамилия;отчество

"Пётр Петров Петрович" -- это что-то балканское получается :))
-----

для случая, если не касаться вопроса получения буфером информации (т.е. если полагать, что текстовое содержание CSV-файла в буфере точно есть и проверять его наличие и формат не надо), решение для любого способа ввода из буфера - оно несложное

однако есть несколько вопросов:
-- работать должно при клике по любому из инпутов или только по imya1?
-- количество ячеек всегда будет совпадать с количеством персон в буфере, или возможны все варианты (и >, и ==, и <; и что делать в двух крайних случаях)?
-- кроссбраузерное решение надо или юзер-агент известен?

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 14:33)   письмо автору
 
   для: ЯСА   (02.11.2012 в 14:18)
 

> "Пётр Петров Петрович" -- это что-то балканское получается :))
Это моя очепятка =) Порядок полей одинаковый в HTML и в CSV.

-- работать должно при клике по любому из инпутов или только по imya1?
Только при вставке в первом столбце первой строки

-- количество ячеек всегда будет совпадать с количеством персон в буфере, или возможны все варианты (и >, и ==, и <; и что делать в двух крайних случаях)?
Главное увидеть принцип. Количество я доработаю.
Скорее всего в HTML будет 1 строка, а в CSV - любое количество и добавление строк по мере необходимости уже в процессе.
Для примера можно считать что и там и там - 3, как в первом посте.

-- кроссбраузерное решение надо или юзер-агент известен?
Браузер - Хром у всех.
Но если покажете кроссбраузерный вариант - будет супер. А то вдруг что изменится потом.

  Ответить  
 
 автор: ЯСА   (02.11.2012 в 16:46)   письмо автору
 
   для: Sfinks   (02.11.2012 в 14:33)
 

<input id="fami1" oninput="myFunc (this)" onpropertychange="myFunc (this, 1)">
...
<script>
function myFunc (obj, msie)
{
if (self.afore) return; afore = true;
if (msie)
  {
  obj.onpropertychange = null;  var hid = document.body.appendChild (
  document.createElement ('<textarea style="width: 1px; height: 1px; visibility: hidden"></textarea>'));
  var txtRng = hid.createTextRange (); txtRng.execCommand ('Paste'); txtRng = hid.createTextRange ();
  var txt = txtRng.text; document.body.removeChild (hid);    
  }
else {var txt = obj.value; obj.oninput = null}
txt = txt.replace (/[\r\n]/g, ' ').replace (/\s+/g, ' ').slice (0, -1);
var arr = txt.split ('; ');
for (var j = 0, lj = arr.length; j < lj; j++) arr [j] = arr [j].split (';');
while (obj.tagName != 'TABLE') obj = obj.parentNode;
var str = 'fami456789imya456789otch';
for (var obj = obj.getElementsByTagName ('input'), j = 0, lj = obj.length; j < lj; j++)
   {
   var ind = str.indexOf ((obj [j].id).slice (0, 4));
   if (ind != -1) obj [j].value = arr [(obj [j].id).substr (4) - 1] [parseInt (ind / 10)];
   }
}
</script>

  Ответить  
 
 автор: Sfinks   (02.11.2012 в 19:02)   письмо автору
 
   для: ЯСА   (02.11.2012 в 16:46)
 

Большое спасибо! Буду разбираться =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования