2016-01-20 3 views
6

Я использую best_in_place для редактирования на странице таблицы данных в приложении ruby-on-rails. Работа по редактированию на месте, но у меня есть нулевой код . Пара элементов в строке (device_name, generic_name) должна быть уникальной. Если они не уникальны, код сервера возвращает набор имен с измененным именем generic_name, чтобы сделать уникальной парой. Для обновления дисплея я использую следующий файл coffeescript.best_in_place сохраняет исходные значения после обновления

jQuery -> 
    $('.best_in_place[data-bip-object="full_dpoint"]').bind(
     "ajax:success", (event, d) ->▫ 
      return if ! d? 
      data = JSON.parse(d) 
      if ! data.dpoint? 
       return 
      else 
       item_to_edit = "#best_in_place_full_dpoint_" + data.dpoint.dpoint_id + "_generic_name" 
       $(item_to_edit).text(data.dpoint.generic_name) 
      ) 

Этот код работает (IE он правильно обновляет страницу с сервером поставляется новым родовым названием), но если я затем нажмите назад в «generic_name» поля (для перехода в режим редактирования), текст редактирования по умолчанию меняет на то, что было в самом начале (время загрузки страницы). У меня есть экспериментировал с установкой много различных элементов страницы в новом родового имени, включая все следующие:

$(item_to_edit).attr('data-bip-original-content', data.dpoint.generic_name) 
$(item_to_edit).attr('data-bip-value', data.dpoint.generic_name) 
$(item_to_edit).attr('original-value', data.dpoint.generic_name) 
$(item_to_edit).attr('bipValue', data.dpoint.generic_name) 
$(item_to_edit).attr('bipvalue', data.dpoint.generic_name) 

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

Любые идеи?

TIA.

Леонард

+0

быстрый вопрос ... после того, как значение получает изменилось в page..what сделать вас получить, если в случае перезагрузки страницы? Показывает измененное значение, которое делает ваш код javascript, или оно возвращается обратно в старое поле, введенное лучшим на месте? – uday

+0

После перезагрузки он корректно отображает измененное значение. Я также должен добавить, что мне не нужно перезагружать страницу, чтобы получить измененное значение, если я просто выхожу за пределы поля «edit», также возвращается к правильному (измененному) значению. – Leonard

ответ

0

Попробуйте

JavaScript:

$(document).ready(function() { 
    /* Activating Best In Place */ 
    jQuery(".best_in_place").best_in_place(); 
    var old_value; 
    $(document).on('change', '.not_abort', function (e) { 
     console.log(e.target.value); 
     old_value = e.target.value; 
    }); 
    $(document).on('ajax:error', '.not_abort', function (e) { 
     console.log(e); 
     e.target.innerHTML = old_value; 
     $(e.target).data('bipOriginalContent', old_value); 
    }); 

}) 

вид:

best_in_place @device_name, :email, class: 'not_abort' 
+0

Не работает ... попробуйте еще раз? – Leonard

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