X - редактируемый ввод, редактируемый при нажатии на другой элемент - программирование
Подтвердить что ты не робот

X - редактируемый ввод, редактируемый при нажатии на другой элемент

У меня есть x-редактируемый ввод, который я использую для редактирования имен пользователей. Действие элемента по умолчанию, когда вы нажимаете на себя, вы можете изменить значение. Но я хочу включить щелчок на элементе .editable и иметь возможность редактировать значение внутри моего ввода. Здесь можно сократить jsfiddle моей текущей ситуации.

JQuery

$(function(){
  $.fn.editable.defaults.mode = 'inline';
  $('#publicname-change').editable({
    type: 'text',
    url: '/post',
    pk: 1,
    placement: 'top',
    title: 'Enter public name'
  }
);

//ajax emulation. Type "err" to see error message
$.mockjax({
  url: '/post',
  responseTime: 100,
  response: function(settings) {
    if(settings.data.value == 'err') {
      this.status = 500;
      this.responseText = 'Validation error!';
    } else {
      this.responseText = '';
    }
  }
}); 

HTML:

<div class="control-group control-group-inline">
  <label class="control-label labelModified" for="publicname-change">Public name:</label>
  <div class="controls">
    <a href="#" id="publicname-change" class="editable editable-click inline-input">Mr.    Doe</a>
    <div class="edit">edit <i class="icon-pencil pencil-input-change"></i></div>
  </div>
</div>

Было бы неплохо, если кто-то может мне помочь и отредактировать связанный jsfiddle, как я описал. В щелчке .edit уметь редактировать значение.

4b9b3361

Ответ 1

У него есть функция, называемая enable, которую вы можете использовать, чтобы включить редактирование

$('.edit').click(function(e){    
       e.stopPropagation();
       $('#publicname-change').editable('toggle');
});

Это не будет работать, если вы не добавите первую строку, потому что поведение по умолчанию - отключить редактирование при щелчке любого другого элемента.

Edit:

Чтобы включить редактирование только нажатием кнопки редактирования, а не текстом, установите для свойства toggle значение manual.

$('#publicname-change').editable({
    type: 'text',
    url: '/post',
    pk: 1,
    placement: 'top',
    title: 'Enter public name',
    toggle:'manual'
}

JSFiddle