Показать сообщение отдельно
  #1 (permalink)  
Старый 10.08.2017, 11:35
Аспирант
Отправить личное сообщение для Tanya51 Посмотреть профиль Найти все сообщения от Tanya51
 
Регистрация: 09.07.2017
Сообщений: 49

Сохраннение измененных данных при клике на кнопку
Есть такая программка, где мы можем изменять данные Firstname, Lastname, Аge, mail, Password.
Что есть: при нажатии на Enter мы сохраняем наши изменения, при нажатии на Esc отменяем сохранение.
А мне надо еще чтоб при нажатии на кнопки save и cancel происходило тоже,что и при нажатии на Enter и Esc. Но у меня не получается.

'use strict';

function validateText(value){
	return value !== '' ? true:false;
}

function saveValue(value){
	console.log('save to server ' +value);
}

$('.list-group').on('click', '[editable]', function(event){
	event.preventDefault();

	var $element=$(this);

	var events = {
		aftersave: $element.attr('editable-aftersave') ? $element.attr('editable-aftersave'):null,
		beforesave: $element.attr('editable-beforesave') ? $element.attr('editable-beforesave'):null,
	};

	var type=$element.attr('editable');

	function endEdit(){
		$element
			.insertAfter(this)
			.text( $(this).val() );


			if(events.aftersave){
				window[events.aftersave]($(this).val());
			};

			$(this).remove();
	};


	
var save,cancel;

$('<input>')
		.insertAfter($element)
		.attr('type',type)
		.val($element.text())
		.focus(function(){
			
			save=$('<button>')
				.insertAfter('input')
				.attr('class','btn btn-primary')
				.append('<span class="glyphicon glyphicon-pencil"></span>')
				.click();
				
			cancel=$('<button>')
				.insertAfter('.btn-primary')
				.attr('class','btn btn-danger')
				.append('<span class="glyphicon glyphicon-remove"></span>')
				.click();
			
		})
		.select()
		.on('keyup', function(event){

			if(event.which===13){
				if(events.beforesave){
					var result = window[events.beforesave]($(this).val());

					if(result){
						endEdit.call(this);
					}

				} else {
						endEdit.call(this);
					}
				save.remove();
				cancel.remove();

			} else if(event.which===27){
				$(this).trigger('blur');
			}

		})
		.on('blur',function(event){
			$element.insertAfter(this);
			$(this).remove();
			save.remove();
			cancel.remove();
		});
	
	
	$element.remove();

});


когда пишу вот так:
.on('click', function(event){
			if(save){//тут
				if(events.beforesave){
					var result = window[events.beforesave]($(this).val());

					if(result){
						endEdit.call(this);
					}

				} else {
						endEdit.call(this);
					}
				save.remove();
				cancel.remove();

			} else if(cancel){//и тут
				$(this).trigger('blur');
			}

		})

то изменения не сохраняются.

Помогите, пожалуйста, разобраться
Ответить с цитированием