Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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');
			}

		})

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при обработке данных TBUCTEP Общие вопросы Javascript 11 12.05.2017 14:56
всплывающий блок при клике на input ChikiBOBONI (X)HTML/CSS 1 31.10.2016 11:40
При клике на ссылку ничего не происходит gurg0n Элементы интерфейса 2 24.06.2013 11:11
Вопрос по jquery. Как запретить один из скриптов при клике vuler Общие вопросы Javascript 1 07.03.2012 22:35
При клике в любом месте документа должен удаляться определенный id DorianLeroy jQuery 2 24.12.2011 22:05