Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2014, 12:29
Интересующийся
Отправить личное сообщение для tishka Посмотреть профиль Найти все сообщения от tishka
 
Регистрация: 05.06.2014
Сообщений: 27

Редактирование данных прямо в таблице
Здравствуйте!
Здесь Тест находится тестовая страница. Таблица с пользователями. Нужно, чтобы при нажатии на любое значение из колонки Город вместо этого значения появлялся select с возможными вариантами.

В принципе, это уже сделано, с одним косячком. Это появление происходит со второго клика. То есть первый раз нажимаем - ничего не происходит. Второй раз - нормально появляется. Подскажите пожалуйста, почему так происходит?

Вот код при нажатии на элемент колонки Город:
$('div.edit-select').click(function(){
	if ($('#editbox').length>0) {
		return false;
	} 
	$('.ajax').html($('.ajax select').val());
	//удаляем все классы ajax
	$('.ajax').removeClass('ajax');
	//Нажатой ячейке присваиваем класс ajax
	$(this).addClass('ajax');
	var selectVal = $(this).text();
	var check = "select-val";
	$.post("http://test.panfproject.ru/ajax.php",
			{
				check: check,
				selectVal: selectVal
			},
			function(data) {
				//var data1;
				data1 = data;
				return data1;
			}
		);
	$(this).html(data1);
	//внутри ячейки создаём input и вставляем текст из ячейки в него
	
	//устанавливаем фокус на созданном элементе
	$('#editbox').focus();
});


Переменная data возвращает html с выводом select с нужными элементами-городами в результате ajax запроса.

Буду благодарен всем откликнувшимся...
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2014, 14:29
Аспирант
Отправить личное сообщение для d.skuratovich Посмотреть профиль Найти все сообщения от d.skuratovich
 
Регистрация: 19.09.2014
Сообщений: 73

В общем-то ничем практическим я тебе не помогу, но был тут на днях у меня проект с похожей задумкой. Так вот я сделал с помощью Backgrid, специальный компонент для Backbone.
Это я к чему? Ищи компоненты, плагины-не надо изобретать, а потом дорабатывать вещи которые до тебя уже использовали
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2014, 14:49
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Ты в консольку загляни и поймешь. F12
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2014, 16:00
Интересующийся
Отправить личное сообщение для tishka Посмотреть профиль Найти все сообщения от tishka
 
Регистрация: 05.06.2014
Сообщений: 27

Сообщение от d.skuratovich Посмотреть сообщение
В общем-то ничем практическим я тебе не помогу, но был тут на днях у меня проект с похожей задумкой. Так вот я сделал с помощью Backgrid, специальный компонент для Backbone.
Это я к чему? Ищи компоненты, плагины-не надо изобретать, а потом дорабатывать вещи которые до тебя уже использовали
Нее) Хочется самому разобраться)) Я и так взял готовое решение, и дорабатываю под себя)

krasovsky, блин, всё время забываю про консольку....
Вот что пишет после первого клика:

Uncaught ReferenceError: data1 is not defined show.js:46(anonymous function) show.js:46jQuery.event.dispatch jquery-1.8.3.js:3058elemData.handle.eventHandle

С этой data с самого начала были проблемы... Нужно было как-то эту переменную вытащить изнутри конструкции $.post, чтобы использовать там... Если сделать Var data, ошибок нету, но и эта переменная не будет работать вне конструкции $.post.

Есть какие-нибудь мысли, господа?
Ответить с цитированием
  #5 (permalink)  
Старый 09.10.2014, 16:11
Интересующийся
Отправить личное сообщение для tishka Посмотреть профиль Найти все сообщения от tishka
 
Регистрация: 05.06.2014
Сообщений: 27

Короче, методом проб и ошибок, получилось вот так:
$('div.edit-select').click(function(){
	if ($('#editbox').length>0) {
		return false;
	} 
	$('.ajax').html($('.ajax select').val());
	//удаляем все классы ajax
	$('.ajax').removeClass('ajax');
	//Нажатой ячейке присваиваем класс ajax
	$(this).addClass('ajax');
	var selectVal = $(this).text();
	var check = "select-val";

        var new = $(this);

	$.post("http://test.panfproject.ru/ajax.php",
			{
				check: check,
				selectVal: selectVal
			},
			function(data) {
				new.html(data);
			}
		);
	
	//внутри ячейки создаём input и вставляем текст из ячейки в него
	
	//устанавливаем фокус на созданном элементе
	$('#editbox').focus();
});


То есть через переменную new. Объявили ее вне конструкции $.post, и затем использовали внутри... Как-то так.. Всем спасибо!))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование данных прямо в таблице tishka jQuery 0 09.10.2014 12:16
AJAX. редактирование данных в таблице MySQL B1ackgh0st AJAX и COMET 1 09.01.2014 04:03
событие при редактирование данных в грид demi ExtJS 1 20.08.2013 11:37
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Сортировка числовых данных в таблице Vladsss Общие вопросы Javascript 15 01.09.2009 17:02