Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

input type="number" won't let me insert negative values (but it does when debugging)

$
0
0

I'm creating a generic form project, the kind of type where you insert a model and the form is generated for you. In order for this to work I now work on a generic input component, which will render specefic attributes for a type ("number", "string"...).Only problem - I can't insert negative values when I'm handling a model with an int (input type="number").When I insert a negetive value and unfocus the input box, the entered value litterally dissapear and I see the followig messege in the browser console (tried to insert -1) :

The specified value "â-1" cannot be parsed, or is out of range.

I've tried to set the "min" attribute, but It didn't do anything.I know I can change the input type to "text" and implement my own validation, but I really just need that simple support for integers.

For a mysterious reason, the expected behaviour obsereved whenever I debug the app in visual studio, which makes the error even harder to detect.

Here is some of the relevant code:

GenericInputComponent.cs:

namespace GenericInput.Components.GenericInputComponent{    public partial class GenericInputComponent<FieldType>    {        [Parameter]        [EditorRequired]        public FieldType? Field { get; set; }        [Parameter]        public EventCallback<FieldType> FieldChanged { get; set; }        private async Task UpdateFieldFromChild(FieldType? value)        {            await FieldChanged.InvokeAsync(value);        }        private InputAttributes.InputAttributes _attributes = InputAttributesFactory.GetAttributes(typeof(FieldType));    }}

GenericInputComponent.razor :

@typeparam FieldType<label>Some Label</label><input @attributes="_attributes.GetSplattableAttributes()" @bind:get="Field" @bind:set="UpdateFieldFromChild" />

InputAttributes.cs file :

global using SplattableAttributes = System.Collections.Generic.Dictionary<string, object>;namespace GenericInput.Components.GenericInputComponent.InputAttributes{    public class InputAttributes     {        private SplattableAttributes _attributes = new();        public SplattableAttributes GetSplattableAttributes()        {            return _attributes;        }        public void Add(string key, object value)        {            _attributes.Add(key, value);        }        public void Add(SplattableAttributes attrs)        {            foreach (var attr in attrs)            {                Add(attr.Key, attr.Value);            }        }        public void Remove(string key)        {            _attributes.Remove(key);        }    }}

IntInputAttributes.cs :

namespace GenericInput.Components.GenericInputComponent.InputAttributes{    public class IntInputAttributes : InputAttributes    {        public IntInputAttributes()        {            Add("type", "number");            Add("min", "-5000");        }    }}

Home.razor :

@using GenericInput.Components.GenericInputComponent;@page "/"<GenericInputComponent @bind-Field="TestInt"></GenericInputComponent><p>    TestInt value:</p><p>    @TestInt</p>@code{    public int TestInt { get; set; } = 0;}

Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>