Показать сообщение отдельно
  #9 (permalink)  
Старый 27.08.2013, 10:04
Интересующийся
Отправить личное сообщение для Artyom Посмотреть профиль Найти все сообщения от Artyom
 
Регистрация: 15.08.2013
Сообщений: 12

В общем, мои попытки успехом так и не увенчались. Вот полный код странички, если кто-то захочет протестировать самостоятельно:
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input id="text" onfocus="focused = true;" onblur="focused = false;" style="margin: 20px 0;"><br>
		<button onclick="addNumber(1)">1</button>	<button onclick="addNumber(2)">2</button>	<button onclick="addNumber(3)">3</button><br>
		<button onclick="addNumber(4)">4</button>	<button onclick="addNumber(5)">5</button>	<button onclick="addNumber(6)">6</button><br>
		<button onclick="addNumber(7)">7</button>	<button onclick="addNumber(8)">8</button>	<button onclick="addNumber(9)">9</button><br>
		<button onclick="">x</button>	<button onclick="addNumber(0)">0</button>	<button onclick="">x</button><br>
		
		<script>
		var focused = false;
		var form = document.getElementById("text");
		var IE = top.execScript?true:false; //true только для IE
		form.focus();
		
		function addNumber(number) {
			form.focus();
			
			if (!IE) {
				if (focused) {
					var start = form.selectionStart; 
					var end = form.selectionEnd;	
					
					form.value = form.value.slice(0, start) + number + form.value.slice(end);
					form.setSelectionRange(start+1, start+1);
					form.focus();
				}
			} else {
				if (document.selection.createRange().parentElement().id == "text") { 
					var select = document.selection.createRange();
					select.text = number;
					form.focus()
				}
			}
		}
		
		</script>
	</body>
</html>


И еще. Обратил внимание, что Хром и фф в случае выделения части введенной информации и клике на цифру корректно заменяет ее (такого поведения я и хочу добиться от всех браузеров), опера НЕ заменяет, но добавляет в конец (судя по всему, она при нажатии кнопки сбрасывает выделение, оставляя только каретку, и в итоге уже в функции начало и конец выделения - одна и та же точка), а вот ИЕ... В общем, вот ИЕ я не понимаю вообще. Он не делает то, что я предполагал, но иногда при нажатии кнопки почему-то (???) вдруг ставит каретку. Я решительно не понимаю, чем руководствуется этот браузер, и никакой закономерности проследить у меня не вышло. Помогите разобраться с этой поганью, пожалуйста...
Ответить с цитированием