powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / небольшой вопрос по краткости-сестре таланта)
13 сообщений из 113, страница 5 из 5
небольшой вопрос по краткости-сестре таланта)
    #38383209
авторТак лучше думаете?
14779585 - вот так я думаю... для веб вполне эффективно и нересурсоёмко!!!
автор При обрыве соединения мы получим ошибку, а изменения применены не будут никакие, после возобновления связи мы делаем перезапрос на запись и вносим все изменения одним разом....
год прошёл!!! все данные изменены уже сотню раз другими людьми - а мы перезаписали своими прошлогодними данными!!!
Уехать надо ))
СБ!!!
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383211
Фотография Karbafos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто интересноот всех возможных минусов избавиться помогает один способ - не притрагиваться к клавиатуре... ;)
1. на клиента тянется минимальное кол-во строк
2. эдит строки с нового запроса
3. _revisions

Karbafos
вот ты и подумай!!! http://en.wikipedia.org/wiki/Push_technology

а что тут думать, делать надо! =)
можно и лонг поллинг заюзать, либо самодельного ТМ сделать(делается 1 раз для 99% задач)

к тому же, даже не используя все это, можно делать всякие проверки, на основе как раз ревизий + обмен служебной инфой до, во время и после сохранения, чтобы убедится в том, что данные лежат там, где нужно и как нужно.
можно одними ajax'ами обойтись, а модель поведения при конфликтах уже из области как больше нравится
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383226
Karbafos
ну и! в отличии от этого 14776823 оппонента - ты это делал!
ТС-у изначально рекомендовали не заморачиваться на UI а изучить основы веб, дабы не тратить время впустую!
ИМХО - он это понял, в процессе прочтения топа!
все счастливы, все довольны! что ещё?
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383315
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто интересноавторТак лучше думаете?
14779585 - вот так я думаю... для веб вполне эффективно и нересурсоёмко!!!
автор При обрыве соединения мы получим ошибку, а изменения применены не будут никакие, после возобновления связи мы делаем перезапрос на запись и вносим все изменения одним разом....
год прошёл!!! все данные изменены уже сотню раз другими людьми - а мы перезаписали своими прошлогодними данными!!!
Уехать надо ))
СБ!!!


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

Вообщем ладно, спор заходит в тупик, так как подходы у нас разные .... очень разные :)... приятно было пообщаться... удачи всем
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383567
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кстати ребят, есть вопрос по поводу одной процедуры, который предложил skyANA , чтобы продемонстрировать юзабельность фокуса и вставки инпута в таблицу в контейнер span.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$('table').on('blur', 'td input', function(event) {
  var input = $(this), parent = input.parent();
        
  parent.html('<span tabindex="1">' + input.val() + '</span>');
});
      
$('table').on('focus', 'td span', function(event) {
  var span = $(this), parent = span.parent();
        
  parent.html('<input tabindex="1" type="text" value="' + span.text() + '"/>');
  parent.children('input').focus();
});




Все супер, скрипт отлично отрабатывает , с логикой работы разобрался. Но есть один неприятный момент. Что после где то шестого седьмого клика процедура перестает отвечать, и чтобы заново все заработало необходимо чуть чуть подождать и потыкать в свободное пространство документа. То есть перестает становиться юзабельной, пригодной для вставки таблица. Есть какой то лимит по выделяемой памяти на event события, или что? Такое ощущение что память забивается.
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383612
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов, что-то не замечаю такого поведения, что за браузер?

И перепишите сей говнокод: анонимные функции - плохо
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
    $('table').on('blur', 'td input', onCellEnter);      
    $('table').on('focus', 'td span', onCellLeave);
    
    function onCellEnter(event) {
      var input = $(this), parent = input.parent();
        
      parent.html('<span tabindex="1">' + input.val() + '</span>');
    }
    
    function onCellLeave(event) {
      var span = $(this), parent = span.parent();
        
      parent.html('<input tabindex="1" type="text" value="' + span.text() + '"/>');
      parent.children('input').focus();
    }
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383628
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Ну по первому варианту он плохо отрабатывал в опере, хроме и эксплорере. То есть это не связано было видимо с браузером. Смысл в следующем, была таблица 7 полей, 5 строк и я поэксперементировал с вашим первоначальным вбросом. Если понажимать на ячейки курсором, то где то с седьмого клика вставка инпута прекращается и ячейки перестают реагировать на вход.
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383663
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов, в моём варианте нет обработки нажатия курсорных клавиш. И нет, описываемых Вами проблем в Хроме.
Может покажете свой код?
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383679
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Я не имею в виду событий на стрелки. Ваш имею в виду именно тот который про фокус. Сейчас доберусь до стационарного компа , покажу.
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38383711
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
<!DOCTYPE HTML>
<html>
<head>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <style>
    table {
      border-collapse: collapse;
    }
      
    th, td {
      border: 1px solid gray;
    }
      
    td span, td input{
      border: none;
      display: block;
      margin: 0;
      padding: 0;
      outline: none;
      overflow: hidden;
      width: 148px;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <th>Container</th>
      <th>Forwarder Name</th>
      <th>ArrivingDate</th>
      <th>LeavingDate</th>
      <th>WarehouseName</th>
      
    </tr>
    <tr>
      <td><span tabindex="1">MSKU5214574</span></td>
      <td><span tabindex="1">SEA LINE</span></td>
      <td><span tabindex="1">29.09.2013</span></td>
      <td><span tabindex="1">05.10.2013</span></td>
      <td><span tabindex="1">DOMODEDOVO</span></td>
    </tr>
    <tr>
      <td><span tabindex="1">MSCU5782361</span></td>
      <td><span tabindex="1">FREIGHT BUILDER</span></td>
      <td><span tabindex="1">19.09.2013</span></td>
      <td><span tabindex="1">12.10.2013</span></td>
      <td><span tabindex="1">KAZAN</span></td>
    </tr>
    <tr>
      <td><span tabindex="1">MSCU5782361</span></td>
      <td><span tabindex="1">WORLD CARRIER</span></td>
      <td><span tabindex="1">12.08.2013</span></td>
      <td><span tabindex="1">01.10.2013</span></td>
      <td><span tabindex="1">ROSTOV</span></td>
    </tr>
    <tr>
      <td><span tabindex="1">TRLU5782361</span></td>
      <td><span tabindex="1">FORWARDER №1</span></td>
      <td><span tabindex="1">25.08.2013</span></td>
      <td><span tabindex="1">16.10.2013</span></td>
      <td><span tabindex="1">SAINT PETERSBURG</span></td>
    </tr>
  </table>
  <script>
    $('td').on('blur', 'input', function(event) {
      var input = $(this), parent = input.parent();
        
      parent.html('<span tabindex="1">' + input.val() + '</span>');
    });
      
    $('td').on('focus', 'span', function(event) {
      var span = $(this), parent = span.parent();
        
      parent.html('<input tabindex="1" type="text" value="' + span.text() + '"/>');
      parent.children('input').focus();
    });
  </script>
</body>
</html>




почему то если долго гонять иногда при выходе из ячейки остается вставленный инпут. и иногда залипает клик, и при нажатии на ячейку новую инпут наоборот не вставляется.
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38384221
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почистил кэш, все заработало. Там в более раннем коде стояли ссылки на другие версии Jquery. Пардоньте!
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38399276
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, в продолжении текущей ветки хочу задать вопрос SkyAna.
Проанализировал коды ввода и отмены фокуса. Проанализировал коды перемещения по таблицы по стрелкам клавиатуры.
Создал и осмыслил по последней процедуре сам некое подобие функции перемещения:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<script type="text/javascript">
$(document).ready(function(){
    
 $('table').on('focus', 'td span', onCellEnter);    
$('table').on('blur', 'td input', onCellLeave); 
 $('table').on('keydown', 'input', navigateKeys);    
      
    function onCellEnter(event) {
      var span = $(this), parent = span.parent(); 
      parent.html('<input tabindex="1" type="text" value="' + span.text() + '"/>');
      parent.children('input').focus();
    }
    
    function onCellLeave(event) {
      var input = $(this), parent = input.parent();
      parent.html('<span tabindex="1">' + input.val() + '</span>');
    }
   
   function navigateKeys(event){
   
   var keyEvent=event.which;
   
   switch(keyEvent){
   
    case 37:
    // влево
    var tdIndex=$(this).parent('td').index('td');
    $('td').eq(tdIndex-1).children('span').focus();
    break;
    
    case 39:
    //вправо
    var tdIndex=$(this).parent('td').index('td');
    $('td').eq(tdIndex+1).children('span').focus();
    
    break;
    
    case 40:
 // вниз
      var tdIndex=$(this).parent('td').index('td');
     var trIndex=$(this).parent('tr').index('tr');
     $('tr').eq(tr-1).find('td').eq(td).children('span').focus();   
      break;
    
     case 38:
   //вверх

    break;
   }
   }
      
 
});      

</script>



С реализацией горизонтального перемещения влево вправо при помощи стрелок клавиатуры разобрался. С индексами тега <td> проблем нет, они в наборе по умолчанию принимают каждый приращение на 1. Зацепиться с помощью eq() и find() не составило сложности.

А вот с кнопками вниз case 40: и вверх case 38: возникло небольшое затруднение. Индекс у строки <tr> в таблице один на всю таблицу?
Помогите пожалст, немного не дожал вертикальные перемещения. Хочу именно по своему примеру.

Вот этот кусок срабатывает некорректно:
Код: javascript
1.
2.
3.
4.
5.
6.
case 40:
 // вниз
      var tdIndex=$(this).parent('td').index('td');
     var trIndex=$(this).parent('tr').index('tr');
     $('tr').eq(tr-1).find('td').eq(td).children('span').focus();   
      break;



Перемещение указателя идет один раз вниз,а последующее уже не происходит.
...
Рейтинг: 0 / 0
небольшой вопрос по краткости-сестре таланта)
    #38399467
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Я конечно не знаток jQuery, но как-то так:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
<!DOCTYPE HTML>
<html>
<head>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
  <style>
    table {
      border-collapse: collapse;
    }
      
    th, td {
      border: 1px solid gray;
    }
      
    td span, td input{
      border: none;
      display: block;
      margin: 0;
      padding: 0;
      outline: none;
      overflow: hidden;
      width: 148px;
    }
  </style>
</head>
<body>
  <table>
    <tr>
      <th>Tab - вперёд</th>
      <th>Shift + Tab - назад</th>
    </tr>
    <tr>
      <td><span tabindex="1">11223</span></td>
      <td><span tabindex="1">34455</span></td>
    </tr>
    <tr>
      <td><span tabindex="1">66778</span></td>
      <td><span tabindex="1">99001</span></td>
    </tr>
    <tr>
      <td><span tabindex="1">12233</span></td>
      <td><span tabindex="1">44556</span></td>
    </tr>
  </table>
  <script>
    $('table').on('blur', 'td input', onCellEnter);      
    $('table').on('focus', 'td span', onCellLeave);
    $('table').on('keydown', 'td input', onInputKeyDown);
    
    function onCellEnter(event) {
      var input = $(this), parent = input.parent();
        
      parent.html('<span tabindex="1">' + input.val() + '</span>');
    }
    
    function onCellLeave(event) {
      var span = $(this), parent = span.parent();
        
      parent.html('<input tabindex="1" type="text" value="' + span.text() + '"/>');
      parent.children('input').focus();
    }
    
    function onInputKeyDown(event) {      
      var cell = $(this).closest('td'), row = cell.closest('tr'),
          cellIndex = row.children('td').index(cell);
   
      switch (event.which) {
        // Left
        case 37:
          cell = cell.prev('td');
          break;
        // Up
        case 38:
          cell = row.prev('tr').children('td').eq(cellIndex);
          break;
        // Right
        case 39:
          cell = cell.next('td');
          break;
        // Down
        case 40:                    
          cell = row.next('tr').children('td').eq(cellIndex);
          break;
      }
      
      cell.children('span').focus()
    }
  </script>
</body>
</html>
...
Рейтинг: 0 / 0
13 сообщений из 113, страница 5 из 5
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / небольшой вопрос по краткости-сестре таланта)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]