Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как запустить событие html при вводе определённого количества символов (https://javascript.ru/forum/misc/50298-kak-zapustit-sobytie-html-pri-vvode-opredeljonnogo-kolichestva-simvolov.html)

Lobezki 20.09.2014 13:30

Как запустить событие 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);
		};

Safort 20.09.2014 13:55

Lobezki,
даже если ты создаёшь поле динамически, то совсем не обязательно знать его id, у тебя же есть сам объект элемента.

Lobezki 20.09.2014 13:56

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

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

Safort 20.09.2014 14:18

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

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

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



Цитата:

Так или иначе объект я получаю после лишнего клацания мышкой/клавиатурой.
Пользователю в любом случае придётся клацнуть, чтобы потом можно было вводить данные.

Lobezki 20.09.2014 14:26

Safort,
возвращаясь к старой теме: http://javascript.ru/forum/misc/5005...vka-formy.html

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

$(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')               			
	
		});
});

Lobezki 20.09.2014 14:28

Цитата:

Сообщение от Safort (Сообщение 331526)
Lobezki,
Пользователю в любом случае придётся клацнуть, чтобы потом можно было вводить данные.

Мне приходится клацать уже после ввода данных. Вообще у меня фокус стоял. Автоотправку я реализовал, как мне подсказали в теме, кот указал выше. Работает, но двигаясь дальше, мне теперь надо динамическое добавление полей. Создавал тему здесь: http://javascript.ru/forum/ajax/5024...-zaprosov.html

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

kostyanet 21.09.2014 00:13

Цитата:

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

onchange от нажатия баттонов срабатывает теперь? раньше было от потери фокуса && контент изменился.

От баттонов горит oninput вроде бы.


Часовой пояс GMT +3, время: 02:06.