Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 08.09.2017, 14:20
Интересующийся
Отправить личное сообщение для rybachok91 Посмотреть профиль Найти все сообщения от rybachok91
 
Регистрация: 07.09.2017
Сообщений: 12

Сообщение от Nexus Посмотреть сообщение
Обработчики на полученные поля накладываются после их размещения на странице?
В <div id="output_data"> помещаются еще три, в которых значения из базы. Они добавляются с помощью скрипта.
Ответить с цитированием
  #22 (permalink)  
Старый 08.09.2017, 14:36
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

rybachok91,
Сообщение от rybachok91
событий chnge или keyup возвращаю
Куда возвращаете?
Обработчики событий никуда ничего не возвращают. В них можно что-то менять - например, глобальную переменную.
Но по какому событию ее нужно будет отправлять обратно в базу данных?
Может, отправить ее из обработчика - отправку записать вместо алерта по примеру пост 14.
Ответить с цитированием
  #23 (permalink)  
Старый 08.09.2017, 14:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<div class="main">
	<h2>ИНФОРМАЦИЯ О ПОЛЬЗОВАТЕЛЯХ</h2>
	<p id="input_text">Введите имя и возраст пользователя и щелкните по кнопке "Найти"</p>
	<div id="output_data"></div>
	<form action="add_new_user.php" method="post" id="input_data">
		<label for="user_name">Имя:</label>
		<input type="text" name="user_name" value="" size="30"><br/>
		<label for="user_age">Возраст:</label>
		<input type="text" name="user_age" value="" size="30"><br/>
		<input type="button" id="find" value="Найти">
	</form>
</div>
<script>
	$(function(){
		$('#find').click(function(){
			var $cont=$('#output_data').empty();
			$('<div></div>').attr({
				'data-type':'text',
				'data-name':'name',
				'data-placeholder':'Новое имя'
			}).text('Имя').appendTo($cont).clone().attr({
				'data-type':'number',
				'data-name':'age',
				'data-placeholder':'Возраст'
			}).text('Возраст').appendTo($cont);
			$cont.find('>div').click(function(){
				var $t=$(this);
				if($t.find('*').length>0)
					return;
					
				$('<input/>').attr({
					type:$t.data('type'),
					name:$t.data('name'),
					placeholder:$t.data('placeholder'),
					'data-original-value':$t.text()
				}).val($t.text()).appendTo($t.empty()).on('keydown',function(e){
					var ENTER_KEYCODE=13;
					if(!!e.keyCode && e.keyCode==ENTER_KEYCODE || !!e.charCode && e.charCode==ENTER_KEYCODE){
						e.stopPropagation();
						$(this).trigger('blur');
					}
				}).blur(function(){
					var $t=$(this);
					if($t.val().trim().length<=0 || $t.val().trim()==$t.data('original-value'))
						return;
					
					send_request($t.attr('name'),$t.val());
					$t.parent().html($t.data('original-value'));
				});
			});
		});
	});
	
	function send_request(field,new_value){
		//Ajax request
		alert(field+': '+new_value);
	}
</script>
Ответить с цитированием
  #24 (permalink)  
Старый 08.09.2017, 14:50
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,210

Сообщение от rybachok91
Скажите, может я что-то не так объясняю?
Объяснения особо не нужны...
Достаточно сделать тестовый пример на котором проявляется проблема. Тогда на этом примере можно показать пути решения.

Вот Nexus наглядно показывает такой пример.

Сообщение от rybachok91
Или код нужно придумывать отдельно для примера, а не рабочий прилагать?
Пример должен быть максимально прост.
Но можешь предложить деньги в разделе "Работа" и возможно найдется желающий помочь тебе прямо в твоем коде.
Ответить с цитированием
  #25 (permalink)  
Старый 08.09.2017, 14:57
Интересующийся
Отправить личное сообщение для rybachok91 Посмотреть профиль Найти все сообщения от rybachok91
 
Регистрация: 07.09.2017
Сообщений: 12

Сообщение от Dilettante_Pro Посмотреть сообщение
rybachok91,
Куда возвращаете?
Обработчики событий никуда ничего не возвращают. В них можно что-то менять - например, глобальную переменную.
Но по какому событию ее нужно будет отправлять обратно в базу данных?
Может, отправить ее из обработчика - отправку записать вместо алерта по примеру пост 14.
Вот это было не понятно: обработчики не возвращают. Нужно отправлять данные, когда изменили имя: или после увода фокуса, или после нажатия Enter. У меня не получилось объединить два события через on(), поэтому пришла идея вернуть измененное в поле значение из обработчика, а потом уже его использовать, чтобы отправить. А можно из двух разных обработчиков отправлять данные? Получается, будет одинаковый код 2 раза? Это тоже моветон? А можно создать отдельно функцию-обработчик и использовать ее в двух событиях?
Ответить с цитированием
  #26 (permalink)  
Старый 08.09.2017, 15:00
Интересующийся
Отправить личное сообщение для rybachok91 Посмотреть профиль Найти все сообщения от rybachok91
 
Регистрация: 07.09.2017
Сообщений: 12

Сообщение от ksa Посмотреть сообщение
Объяснения особо не нужны...
Достаточно сделать тестовый пример на котором проявляется проблема. Тогда на этом примере можно показать пути решения.

Вот Nexus наглядно показывает такой пример.


Пример должен быть максимально прост.
Но можешь предложить деньги в разделе "Работа" и возможно найдется желающий помочь тебе прямо в твоем коде.
Спасибо, теперь все понятно. Моя проблема в том, что в примерах в конце alert и все работает. У меня тоже 2 события с alertom сработали. Ступор был в том, что дальше. Пробелов в знаниях много, не спорю. Только начинаю. И что обработчики ничего не возвращают, было упущено.
Ответить с цитированием
  #27 (permalink)  
Старый 08.09.2017, 15:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от rybachok91
Ступор был в том, что дальше
Дальше алерт заменяешь созданием асинхронного запроса.
http://api.jquery.com/jquery.ajax/
http://api.jquery.com/jQuery.post/
http://api.jquery.com/jQuery.get/
Ответить с цитированием
  #28 (permalink)  
Старый 08.09.2017, 15:34
Интересующийся
Отправить личное сообщение для rybachok91 Посмотреть профиль Найти все сообщения от rybachok91
 
Регистрация: 07.09.2017
Сообщений: 12

Спасибо Вам.
Ответить с цитированием
  #29 (permalink)  
Старый 09.09.2017, 07:29
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от rybachok91
Мне не понятно: в первом виде на скриншоте следом за событием click написано change и вывод alert для проверки, если оно сработало. Во втором виде последовательность та же и все заработало. Ну и конечно да, у меня не получилось объединить два события через on() это вас повеселит.
Во втором примере у вас событие change находится внутри функции события click, т.е. обработчик навешивается _после_ появления элемента на странице.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дублирование INPUT1 и INPUT2 в поле INPUT 3 grafb Общие вопросы Javascript 3 23.08.2020 12:15
change событие после появления PHP Useless Элементы интерфейса 6 31.07.2017 11:38
событие change Shaci Общие вопросы Javascript 3 20.02.2012 22:31
Событие Change exvion jQuery 3 06.05.2010 12:11
Как отловить событие onchange на LookUp поле? spps Events/DOM/Window 0 09.09.2008 16:02