| 
	| 
	
	| 
		
	| 
			
			 
			
				21.11.2014, 21:52
			
			
			
		 |  
	| 
		
			
			| что-то знаю       |  | 
					Регистрация: 24.05.2009 
						Сообщений: 5,176
					 
		
 |  |  
	| 
	
 
	| Сообщение от klk.pma |  
	| Если представленный вариант неправильный, можете показать корректный вариант? |  
	
 представленный вариант не учитывает сдвиг курсора при вводе данных, а так же конечно кроссбраузерность, например в ИЕ9 нажатие клавиши backspace не вызывает событие oninput. И прочие мелочи, что бы все это учеть нужно намного больше написать. Либо использовать уже существующие решения, например вот этой :
 
<script type="text/javascript" src="http://devote.github.io/files/letjs/let.js"></script>
<input data-let-input="/^\d+$/" class="digit" type="text" maxlength="8" name="ot" value="">
<input data-let-input="/^\d+$/" class="digit" type="text" maxlength="8" name="do" value="">
 |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 21:55
			
			
			
		 |  
	| 
		
			
			| что-то знаю       |  | 
					Регистрация: 24.05.2009 
						Сообщений: 5,176
					 
		
 |  |  
	| 
	
 
	| Сообщение от krutoy |  
	| Его смело можно применять, как правило, если место не суперузкое, только с умом. |  
	
 в том то и дело что его можно и нужно применять там, где без его применения иного способа нет. Я этого не по наслышке а по собственному опыту говорю, когда писал CSS-селектор , именно там производительность играла огромную роль. А использование конструкции for...in мне вставляло камни под колеса. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 21:56
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| 
	
 
	| Сообщение от devote |  
	| сдвиг курсора при вводе данных |  
	
 А какое он имеет значение? 
	
 
	| Сообщение от devote |  
	| нажатие клавиши backspace не вызывает событие oninput |  
	
 И что? по бекспейсу печатается нецифровой символ? |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:00
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| 
	
 
	| Сообщение от devote |  
	| именно там производительность играла огромную роль |  
	
 Вот где играет, там и не надо писать. Я об этом уже сказал. Если так параноить над каждой строкой кода, совершенству нет предела, будешь до конца жизни один скрипт оптимизировать. forEach, например, тоже  работает ОЧЕНЬ медленно. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:01
			
			
			
		 |  
	| 
		
			
			| что-то знаю       |  | 
					Регистрация: 24.05.2009 
						Сообщений: 5,176
					 
		
 |  |  
	| 
	
 
	| Сообщение от krutoy |  
	| А какое он имеет значение? |  
	
 курсор ввода, всегда должен оставаться там где его оставил пользователь. А когда меняешь свойство .value у текстового поля, курсор уходит в конец текстового поля. Что не совсем правильно.
 
	
 
	| Сообщение от krutoy |  
	| И что? по бекспейсу печатается нецифровой символ? |  
	
  Ничего не печатается, а удаляется символ находящийся перед курсором ввода. Но, на это действие ИЕ9 никак не реагирует и не вызывает событие oninput (это просто Баг ИЕ9). Другие события, такие как keypress, keydown и т.д отрабатывают корректно. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:02
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| devote,Кстати, насчет теста я не соврал. В хроме у меня for отработал, в среднем, процентов на 20 быстрей. Видимо, жедезо и ось играет роль.
 |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:02
			
			
			
		 |  
	| 
		
			
			| что-то знаю       |  | 
					Регистрация: 24.05.2009 
						Сообщений: 5,176
					 
		
 |  |  
	| 
	
 
	| Сообщение от krutoy |  
	| forEach, например, тоже работает ОЧЕНЬ медленно. |  
	
  ну было бы странно если бы он работал быстрее.. Он же на каждую итерацию вызывает функцию, а вызов функции пожирает большие ресурсы. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:06
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| 
	
 
	| Сообщение от devote |  
	| Ничего не печатается, а удаляется символ находящийся перед курсором ввода. Но, на это действие ИЕ9 никак не реагирует и не вызывает событие oninput (это просто Баг ИЕ9) |  
	
 но в данном случае оно и не нужно. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:09
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| 
	
 
	| Сообщение от devote |  
	| Другие события, такие как keypress, keydown и т.д отрабатывают корректно. |  
	
 Я, кстати, протестил события, они работают на порядок медленней oninput в FF и V8. А V8 вообще тормозной при работе с текстовыми полями, я уже который раз замечаю. |  |  
	| 
		
	| 
			
			 
			
				21.11.2014, 22:21
			
			
			
		 |  
	| 
		
			
			| Профессор     |  | 
					Регистрация: 09.11.2014 
						Сообщений: 610
					 
		
 |  |  
	| 
	
 
	| Сообщение от devote |  
	| не учитывает сдвиг курсора при вводе данных |  
	
 А нет ли способа для контроля положения курсора? А то, можно было бы и обработать, (хотя это мелочь, в данном случае, это произойдет только если пользователь сдвинет курсор что-то исправлять и введет при этом нецифровой символ --можно забить на это) |  |  |  |