Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2018, 09:45
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

input, заблокировать первые два символа
Добрый день подскажите, как сделать так что бы когда пользователь меняет значение в инпуте, некоторые символы он не мог изменить, что бы они остались как были.
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2018, 10:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от pokk
как сделать так что бы когда пользователь меняет значение в инпуте, некоторые символы он не мог изменить, что бы они остались как были
Вот, например, не меняются первые 2 символа...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var str='';
	$('input').on('input',function(e){
		if (str.length==2) {
			if (this.selectionStart<3) {
				this.value=this.value.replace(/./,'');
			};
			this.value=this.value.replace(/.?.?/,str);
		} else {
			str=this.value.slice(0,2);
		};
	});
});
</script>
</head>
<body>
<input type='text' />
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2018, 12:49
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Благодарю, а replace(/./ и replace(/.?.?/ чего такое и для чего?
18 строчка this.value=''; какое отличие?

у себя сделал чуть по другому но и так тоже работает
var str='';
function Input_MAC(){
Temp=document.getElementById("id_Mac");
		if (str.length==2) {
			if (Temp.selectionStart<3) {
				//Temp.value=Temp.value.replace(/./,'');
				Temp.value='';
				console.log(Temp.value);
			};
			Temp.value=Temp.value.replace(/.?.?/,str);
			console.log(Temp.value);
		} else {
			str=Temp.value.slice(0,2);
		};	
	
}

Последний раз редактировалось pokk, 05.02.2018 в 12:54.
Ответить с цитированием
  #4 (permalink)  
Старый 05.02.2018, 14:20
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Наверное, имеет смысл заранее задать 2 первых символа, например:
var str='0#';
    $('input').val(str);
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2018, 09:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,225

Сообщение от pokk
а replace(/./ и replace(/.?.?/ чего такое и для чего?
Сообщение от ksa
this.value=this.value.replace(/./,'');
Убирает первый символ.
Сообщение от pokk
Temp.value='';
Твой вариант просто "обнуляет" всю строку...
Думаю разница тут очевидна.

Сообщение от ksa
this.value=this.value.replace(/.?.?/,str);
Уберет первый и второй символы если они есть...

Сообщение от pokk
у себя сделал чуть по другому но и так тоже работает
Это же твой код - тебе и определять какой он будет...
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2018, 10:54
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

можно вынести их перед инпутом
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2018, 11:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Alexandroppolus,
Сообщение от Alexandroppolus
можно вынести их перед инпутом
Здравая мысль! Такой как-бы комбинированный инпут
<div style="display: inline-block;border:1px solid blue">
  0x<input type="text">
</div>

Последний раз редактировалось Dilettante_Pro, 06.02.2018 в 11:56.
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2018, 11:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Dilettante_Pro
Здравая мысль!
Если только не требуется отправка их на сервер, в противном случае придется собирать дополнительно в кучу. И что это такое 0#?
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2018, 12:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

laimas,
Пардон, 0x
Префикс шестнадцатеричного числа. Именно эти два символа нужны ТС, насколько я помню из его предыдущих тем
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2018, 12:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<input type="number" min="100" max="125" value="105" onchange="document.getElementById('hex').value=this.valueAsNumber.toString(16).toUpperCase()" /> 0x<output id="hex">69</output>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое копирование значения из input в input с одинаковыми атрибутами name ami_moor jQuery 2 10.08.2016 17:02
Если в input text первые буквы TD то... dima85 Общие вопросы Javascript 2 12.09.2015 12:33
Вставка символа в input arkada38 Общие вопросы Javascript 5 21.12.2014 22:34
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55