Реализация ввода десятичных цифр

279
09 декабря 2016, 08:52

Всем доброго! Народ помогите новичку никак не могу решить вопрос вводы десятичных цифр. Как это делать правильно.

Есть модель:

public decimal Proba1 { get; set; }

стандартная форма ввода не дает вводить десятичные знаки не через " , " не через " . ".

<input asp-for="Proba1" class="form-control" />
Answer 1

Суть проблемы заключалась в следующем: ASP NET Core стало по умолчанию использовать JqueryValidation. И вот тут произошла накладка так как база ждала разделитель в виде ",". А jQuery не пропускал и ждал точку. В результате нельзя было вообще ввести дробное число. В документации на ASP NET Core я нашел предупреждение об этом. Еще не до конца разобрался как можно правильно и полноценно включить Локализацию, по этому пошел наверно не по самому верному пути просто в самом файле JqueryValidation.js заменил разделитель.

// http://jqueryvalidation.org/number-method/
    number: function( value, element ) {
        return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\,\d+)?$/.test( value );
    },

Он вот в этом блоке

(?:\,\d+)

Решение я взял вот здесь jQuery validate and the comma decimal separator. Но пока так и не смог найти как правильно и полно сделать локализацию JqueryValidation.

Answer 2

Вам необходимо указать тип элемента input, для этого добавьте в него следующее свойство - type="number" и step="any", тогда Ваш элемент будет числовым. Вот так:

<input asp-for="Proba1" class="form-control" type="number" step="any"/>

Браузеры, которые поддерживают <input type="number"> будут отправлять . в качестве десятичного разделителя. Шаг можно установить и свой, к примеру step="0.01".

Для того, чтобы браузеры корректно отрабатывали знак разделителя можно использовать <input type="text">, но в таком случае Вам придется использовать JavaScript библиотеки или JQuery, для того, чтобы контролировать введенные символы с клавиатуры.

Также можно воспользоваться аттрибутом asp-format. Ознакомиться можно тут Standard Numeric Format Strings. Тогда отображение числового значения с 4 знаками после запятой будет выглядеть так:

<input asp-for="Proba1" class="form-control" asp-format="{0:N4}"/>
READ ALSO
RabbitMQ: вопрос оптимизации очередей

RabbitMQ: вопрос оптимизации очередей

Я новичок в RabbitMQПрочитал статью «Deploying Microservices Architecture with C#, Part 2»

297
Стоит задача оптимизации кода C#

Стоит задача оптимизации кода C#

Столкнулся с проблемой в Windows FormПример: Создано две кнопки Btn1, Btn2 и textBox1

319
Игнорирование child&#39;ов при наведении на panel WinForms

Игнорирование child'ов при наведении на panel WinForms

Вот у нас есть panel, и на ней всякие другие элементы, например labelИ в panel, есть событие MouseHover (оно срабатывает, когда мышь наведена на объект),...

341
C#, как ввести текст на сайте? [закрыто]

C#, как ввести текст на сайте? [закрыто]

Допустим, есть сайт wwwyoutube

298