Я создаю компонент Blazor, который использует MudTextField для приема десятичных чисел и их отображения с разделителями тысяч в реальном времени. Я хочу, чтобы форматирование вступило в силу, как только пользователь вводит текст (например, ввод 123456.78 должен стать 123,456.78). Мне также нужно поле для автоматического выделения всего текста в фокусе.
Вот мой текущий код. Он отображает текст с форматированием запятыми только после потери фокуса, а не при каждом нажатии клавиши:
@using System.Globalization
@code
{
[Parameter] public decimal? Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public string? Placeholder { get; set; }
[Parameter] public Variant Variant { get; set; } = Variant.Outlined;
[Parameter] public string Class { get; set; } = string.Empty;
private MudTextField _input = default!;
private string _displayValue = string.Empty;
protected override void OnInitialized()
{
if (Value.HasValue)
{
_displayValue = FormatNumber(Value.Value);
}
}
private void OnTextChanged(string newValue)
{
var raw = newValue.Replace(",", "");
if (decimal.TryParse(raw, out var parsed))
{
Value = parsed;
ValueChanged.InvokeAsync(parsed);
_displayValue = FormatNumber(parsed);
}
else
{
_displayValue = newValue;
}
}
private async Task OnInputFocus(FocusEventArgs args)
{
await _input.SelectAsync();
}
private string FormatNumber(decimal number) => number.ToString("###,##0.##", CultureInfo.InvariantCulture);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... cimal-inpu
MudBlazor: Как включить разделители тысяч в реальном времени в пользовательском компоненте ввода десятичных чисел? ⇐ C#
Место общения программистов C#
1736757359
Anonymous
Я создаю компонент Blazor, который использует MudTextField для приема десятичных чисел и их отображения с разделителями тысяч в реальном времени. Я хочу, чтобы форматирование вступило в силу, как только пользователь вводит текст (например, ввод 123456.78 должен стать 123,456.78). Мне также нужно поле для автоматического выделения всего текста в фокусе.
Вот мой текущий код. Он отображает текст с форматированием запятыми только после потери фокуса, а не при каждом нажатии клавиши:
@using System.Globalization
@code
{
[Parameter] public decimal? Value { get; set; }
[Parameter] public EventCallback ValueChanged { get; set; }
[Parameter] public string? Placeholder { get; set; }
[Parameter] public Variant Variant { get; set; } = Variant.Outlined;
[Parameter] public string Class { get; set; } = string.Empty;
private MudTextField _input = default!;
private string _displayValue = string.Empty;
protected override void OnInitialized()
{
if (Value.HasValue)
{
_displayValue = FormatNumber(Value.Value);
}
}
private void OnTextChanged(string newValue)
{
var raw = newValue.Replace(",", "");
if (decimal.TryParse(raw, out var parsed))
{
Value = parsed;
ValueChanged.InvokeAsync(parsed);
_displayValue = FormatNumber(parsed);
}
else
{
_displayValue = newValue;
}
}
private async Task OnInputFocus(FocusEventArgs args)
{
await _input.SelectAsync();
}
private string FormatNumber(decimal number) => number.ToString("###,##0.##", CultureInfo.InvariantCulture);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79350838/mudblazor-how-to-enable-real-time-thousands-separators-in-a-custom-decimal-inpu[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия