2014-01-10 5 views
0

У меня есть сайт со столом. Я загружаю данные в таблицу из объектов. Ячейки таблицы имеют contenteditable.Синхронизация объекта с таблицей HTML

Я использую Bootstrap и jQuery, не более того.

Таблица

 <table> 
      <thead> 
      <tr> 
      <th class="date">Date</th> 
      <th class="start">Start</th> 
      <th class="end">End</th> 
      <th class="title">Title</th> 
      <th class="rem">Remarks</th> 
      </tr> 
      </thead> 
      <tbody id="tableBody"> 

      </tbody> 
     </table> 

код для заполнения таблицы:

$("#tableBody").append("<tr>" + date + start + end + descr + rem "<td contenteditable='true'></td></tr>"); 

Это объект, который я пытаюсь синхронизировать:

function Shift(start, end, descr) { 
    this.start = start; 
    this.end = end; 
    this.descr = descr; 
} 

начало даты и конец и т.д., отформатирован в быть ТД.

Как добиться того, чтобы люди могли изменять текст в таблице и обновлять объект?

+2

Предоставить соответствующий код –

+0

Мое первое предположение было бы использовать библиотеку, такую ​​как нокаут, но трудно понять, что после вас нет. – Gjohn

+0

@Wolff - правда, трудно узнать, что он ищет. – Gjohn

ответ

1

я, наконец, решил это без рамки. Вот как это делается:

Создайте таблицу, как описано выше. Затем вместо использования contentEditable (который плохо поддерживается) заполните все <TD>, которые вы хотите сделать редактируемыми с помощью <textarea>. Затем дайте атрибуту name textarea значение вашего столбца и присвойте ему идентификатор, соответствующий объекту, который вы использовали для заполнения этой конкретной строки.

Затем, когда обновляется любое текстовое поле, просто обновляйте соответствующий объект.

0

Вам нужно что-то для «склеивания» данных и просмотра вместе. Вы можете использовать фреймворк, который поддерживает привязку данных, например AngularJS, EmberJS, Knockout или Backbone. Если вы хотите сохранить свои данные, вам необходимо предоставить какой-то бэкэнд для хранения (mysql, sqlite, ...)

+0

Мне не нужна настойчивость, как только объект был обновлен, они будут обработаны, и все. Дело в том, что у меня есть только одна таблица на моем веб-сайте, на которую я хочу применить это, кажется немного тяжелой, чтобы представить Angular или что-то еще только для этой страницы? – Difusio

+0

@Difusio IMHO Вы правы –

+0

Я надеялся на указатели на пользовательское решение, я нашел: http://stackoverflow.com/questions/16113070/how-to-associate-an-object-with-a-dom- но я не уверен, что это то, что я ищу. Я не знаю, как преобразовать это в таблицу. – Difusio

0

Я бы использовал Knockout в качестве самого быстрого решения.

Этот учебник поможет вам начать:

http://knockoutjs.com/examples/gridEditor.html
http://knockoutjs.com/examples/helloWorld.html

+0

Проверка, когда мы говорим. Спасибо. – Difusio

+0

Еще один быстрый вопрос - я предполагаю, что у вас будет только одна строка в таблице? Или будет несколько прочитанных PDF-файлов и несколько строк в таблице? – dotnethaggis

+0

Несколько строк, где-то между 20 и 40. – Difusio

Смежные вопросы