Сделать первый символ ввода HTML недоступным для редактирования - javascript

У меня есть поле ввода

<input type = "text" value = "$">

Мне нужно, чтобы символ $ был зафиксирован в первом месте ввода, независимо от числа или символа, введенного внутри ввода.

В настоящее время я добавляю символ $ извне в функцию onChange

value = '$' + value

В принципе, пользователь не должен иметь возможность очистить символ $. Это должно быть исправлено. Как этого добиться?

Я использую javascript и React.

Вы можете попробовать использовать CSS, чтобы создать впечатление, что символ «$» является частью ввода, сделав границу вокруг них обоих. Внешний вид символа $ - это то, что вам нужно, а не функциональность ввода.

jmbmage 31.07.2018 15:13

Так что плохого в использовании подхода onChange ??

Adam Nathaniel Davis 31.07.2018 15:17
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
671
2

Ответы 2

При изменении ввода вы можете сначала удалить все вхождения $ из значения. Затем добавьте к значению префикс $.

Попробуйте следующее:

function inputValue(el){
  el.value = el.value.replace(/[$+]/g, ''); //replace all $ with empty string
  el.value = '$' + el.value; //prepend $ to the input value
}
<input type = "text" value = "$" oninput = "inputValue(this)">

Если вы хотите разрешить только числа и точку (.), просто используйте:

el.value = el.value.replace(/[^0-9.]/g, '');

Вы помещаете свое поле ввода в div. Этот div показывает заполнитель для вашего поля ввода и заставляет его выглядеть так, как будто внутри действительно есть символ $, который не редактируется.

.foo {
  padding-left: 20px;
}

.placeholder
{
    position: relative;
}

.placeholder::after
{
    position: absolute;
    left: 5px;
    top: 1px;
    content: attr(data-placeholder);
    pointer-events: none;
    opacity: 0.6;
}
<div class = "placeholder" data-placeholder = "$">
    <input type = "text" class = "foo" value = "">
</div>

<button type = "button" onclick = "alert(document.getElementsByClassName('foo')[0].value)">
  Get Value
</button>

Другие вопросы по теме