событие onInput не берет в расчет после точки
- Blazor Server Side
я использую событие oninput в моем input, а в label показываю вычисление +/-
30-28.5 = 1.5, а выдает 2 (не берет в расчет, то, что после точки/запятой)
пробовала использовать onfocusout (подумала, может когда я выйду за поле, он тогда перерасчет возьмет полностью ) тот же результат
<input step="any" min="0" type="number" @[email protected]
onclick="this.select();" @oninput="@((args)=>InputBind(args, myDataObject))"
class="someCss" />
<label style="visibility:@someVisibility;">
(@string.Format(CultureInfo.InvariantCulture, "{0:F3}", @ValueUpdate))
</label>
float ValueUpdate;
public void InputBind(Microsoft.AspNetCore.Components.ChangeEventArgs args, MyModel model)
{
float intOut;
if (float.TryParse(args.Value.ToString(), out intOut))
{
ValueUpdate = intOut;
}
ValueUpdate = ValueUpdate - model.ValueBase; // model.ValueBase type float
}
может мой string format неверный ? а может там output в стринг когда идет, надо обратно во float, или может вообще не так все делать ?
Ответы (2 шт):
30-28.5 = 1.5, а выдает 2
Тебе нужно смотреть что в итоге у тебя получается на клиенте. Вот смотри - все работает
test.addEventListener('input', e => {
const v = +e.target.value
res.innerText = 30 - v
})
<input id='test' type='number' />
<p>(<span id='res'></span>)</p>
источник отсюда https://stackoverflow.com/a/63880070/13754729
решение мне не нравится (почему надо полю давать значение text если я цифру пишу, те надо еще запретить вводить буквы), но работает, поэтому оставлю здесь, если кто как и я искал ...
<input step="any" min="0" type="text" inputmode="decimal" @[email protected]
onclick="this.select();" @oninput="@((args)=>InputBind(args, myDataObject))"
class="someCss" />
<input style="visibility:@someVisibility;" @bind-value="@ValueUpdate">

