Я создаю компонент 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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Форматирование чисел (десятичные знаки, разделители тысяч, локализация и т. д.) с помощью CSS
Anonymous » » в форуме CSS - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-