Search code examples
blazormudblazormaui-blazor

How to force to accept only numbers html input for Maui Blazor?


I would like to prevent to type anything else only integers for .

I am using Maui Blazor with MudBlazor. For regular Blazor on computer this works, but on phone does not.

<MudNumericField
    @bind-Value="value"
    Label="Standard"
    Variant="Variant.Text" 
    Min="0" 
    Max="10"
    Pattern="[0-9]" />

@code {
    int value = 0;
}

Solution

  • In the end i solved with these:

    Razor.cs

    private int? _integerValue;
    
    [Inject]
    public IJSRuntime JSRuntime { get; set; } = default!;
    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            await JSRuntime.InvokeVoidAsync("mask");
        }
    }
    

    CustomMasks.js

    window.mask = () => {
        const integerMask = {
            mask: Number,
            min: 0,
        };
    
        var elements = document.querySelectorAll(".positive-integer input");
        elements.forEach(element => {
            IMask(element, integerMask);
        });
    };
    

    Razor:

    <MudNumericField @bind-Value="_integerValue" Class="positive-integer"/>