input, заблокировать первые два символа
Добрый день подскажите, как сделать так что бы когда пользователь меняет значение в инпуте, некоторые символы он не мог изменить, что бы они остались как были.
|
Цитата:
<!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>
|
Благодарю, а 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);
};
}
|
Наверное, имеет смысл заранее задать 2 первых символа, например:
var str='0#';
$('input').val(str);
|
Цитата:
Цитата:
Цитата:
Думаю разница тут очевидна. Цитата:
Цитата:
|
можно вынести их перед инпутом
|
Alexandroppolus,
Цитата:
<div style="display: inline-block;border:1px solid blue"> 0x<input type="text"> </div> |
Цитата:
|
laimas,
Пардон, 0x Префикс шестнадцатеричного числа. Именно эти два символа нужны ТС, насколько я помню из его предыдущих тем |
<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>
|
Цитата:
но намного проще, чем обработка "oninput", потому что в последнем, по хорошему, надо не просто корректировать value, а ещё и запоминать/восстанавливать позицию курсора. Кстати, если тут нужны шестнадцатиричные числа, то таки придется это заговнокодить. Либо сделать проверку при отправке. |
Цитата:
|
Цитата:
Это еще ладно, что на клиенте придется "костылять", а что же тогда есть на сервере, если все связано с базой? К чему это весь сыр-бор не понятно. Десятичными должен оперировать и клиент, и сервер, а если надо, то представить можно хоть в восьмеричной, какие тут проблемы. |
laimas,
Цитата:
|
Цитата:
Вы представляете хранение опций в базе в виде шестнадцатеричных значений? Конечному потребителю как то ini-файлов, hex-дампов прошивок причем в любом формате intel/motorolla, и т.п., десятичные упаковать в любое иное исчисление не проблема, а вот оперировать шестнадцатеричными не удобно. Все может быть, может так и выгоднее, но тогда для удобства свое кастомное поле с кнопками c отображением в hex. |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 21:52. |