Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2014, 13:30
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Как запустить событие html при вводе определённого количества символов
Дело в том, что это поле создаётся динамически, поэтому его id заранее неизвестно. Поэтому вариант if (z.value.length == 8) {... не пойдёт.

<input style="width: 100px" type="text" name="books[]" id="if1" onChange="fieldChange(this.value,this.id);" maxlength="8"/>


function fieldChange(obj,numid) {
				var nid1 = '#span1_'+numid.substring(2,10);
				var nid2 = '#span2_'+numid.substring(2,10);
				var nid3 = '#span3_'+numid.substring(2,10);
				
				alert('Отработала функция получив значение > ' + obj + " <<>> " + nid1);
		};
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2014, 13:55
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Lobezki,
даже если ты создаёшь поле динамически, то совсем не обязательно знать его id, у тебя же есть сам объект элемента.
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2014, 13:56
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Это понятно, но мне надо, что бы ajaxзапрос происходил сразу после ввода 8 символа, а если я ставлю onchange, то надо клацнуть еще раз, ч.б. запрос произошел. А без onchange я не знаю как сделать запрос из динамически созданного инпута к функции.

Так или иначе объект я получаю после лишнего клацания мышкой/клавиатурой.

Последний раз редактировалось Lobezki, 20.09.2014 в 14:02.
Ответить с цитированием
  #4 (permalink)  
Старый 20.09.2014, 14:18
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Lobezki,
Чот не пойму в чём проблема.
Как ты создаёшь поле?
Если сразу вставляешь html-блок кода, то пусть в нём сразу onchange будет прописан.
А если динамически, то, как я уже сказал, у тебя уже есть объект элемента, вешай на него что хочешь.

Зачем функцию вызываешь как
fieldChange(this.value,this.id)
?
Не проще ли так
fieldChange(this)

а внутри уже получить доступ к нужным тебе id, value и прочим атрибутам.



Цитата:
Так или иначе объект я получаю после лишнего клацания мышкой/клавиатурой.
Пользователю в любом случае придётся клацнуть, чтобы потом можно было вводить данные.
Ответить с цитированием
  #5 (permalink)  
Старый 20.09.2014, 14:26
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Safort,
возвращаясь к старой теме: Автоотправка формы

новое поле у меня создаётся при помощи:

$(document).ready(function() {
		var AddField = $("#add_field");
		var AddBook = $("#addBook");
		var FClient = $("#newClient");
		var f = 1;
		$(AddField).click(function() {
			f++;
			   $('<tr>')
			   .attr('id','tr_image_'+ f)
			   //.css({lineHeight:'20px'})
			   .append (
				   $('<td style="text-align: center">')
				   .css({paddingRight:'5px',width:'100px'})
				   .append(
					   $('<span>Книга</span>')
				   )                                                       
				)
				
				.append (
				   $('<td>')
				   .attr('id','td_title_'+ f)
				   .css({paddingRight:'5px'})
				   //.css({paddingRight:'5px',width:'300px'})
				   .append(
					   $('<input type="text" onChange="fieldChange(this.value,this.id);" />')
					   .css({width:'100px'})
					   .attr('id','if'+ f)
					   .attr('name','books[]')
				   )                                                        
				)
				
				.append (
				   $('<td>')
				   .append(
					  $('<p><span>Фамилия: <font style="color:green"><span id="span1_'+f+'"></span></font></span></p>')
					)	
				   .append(
					  $('<p><span>Имя: <font style="color:green"><span id="span2_'+f+'"></span></font></span></p>')
					)	
				   .append(
					  $('<p><span>Название: <font style="color:green"><span id="span3_'+f+'"></span></font></span></p>')
					)	
				)	
				
				.append(
					$('<td>')
					.css({width:'20px'})
					.append(
					   $('<span id="progress_'+ f +'" ><a href="#" onclick="$(\'#tr_image_'+ f +'\').remove();" class="ico_delete"><img src="img/false.png" alt="del" border="0"></a></span>')
					 )
				 )
				 
				  .appendTo('#table_container')               			
	
		});
});
Ответить с цитированием
  #6 (permalink)  
Старый 20.09.2014, 14:28
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Сообщение от Safort Посмотреть сообщение
Lobezki,
Пользователю в любом случае придётся клацнуть, чтобы потом можно было вводить данные.
Мне приходится клацать уже после ввода данных. Вообще у меня фокус стоял. Автоотправку я реализовал, как мне подсказали в теме, кот указал выше. Работает, но двигаясь дальше, мне теперь надо динамическое добавление полей. Создавал тему здесь: Динамическое добавление формы и ajax-запросов

Динамическое добавление полей работает, запросы в ajax работают, но к сожалению поле Читателя срабатывает, а поле книги нет( из-за привязки события onchange.

Последний раз редактировалось Lobezki, 20.09.2014 в 14:44.
Ответить с цитированием
  #7 (permalink)  
Старый 21.09.2014, 00:13
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от Lobezki
после ввода 8 символа, а если я ставлю onchange, то надо клацнуть еще раз, ч.б. запрос произошел.
onchange от нажатия баттонов срабатывает теперь? раньше было от потери фокуса && контент изменился.

От баттонов горит oninput вроде бы.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно подавить событие при подключении своего обработчика? Маэстро Firefox/Mozilla 2 03.09.2011 11:46
<input type='text'> Как выровнять по правому краю мигающий курсор при вводе? Golovastik Серверные языки и технологии 1 15.02.2011 09:59
Как запустить функцию при отображении элемента в окне браузера? Kostushko Events/DOM/Window 6 27.09.2010 11:03
При выборе определенного option => событие FRIE jQuery 2 05.03.2010 11:40
постоянное повторяющееся событие при mouseover. как? greysells jQuery 2 01.02.2010 13:37