根据html5.org,"数字"输入类型的"值属性,如果指定且不为空,则必须具有有效浮点数的值."
然而它简直(在最新版本的Chrome中,无论如何),一个带有整数的"updown"控件,而不是浮点数:
<input type="number" id="totalAmt"></input>Run Code Online (Sandbox Code Playgroud)
是否存在HTML5原生的浮点输入元素,或者使数字输入类型与浮点数一起使用的方法,而不是整数?或者我必须使用jQuery UI插件?
我想显示一个2位小数的数字.
我以为我可以toPrecision(2)在JavaScript中使用.
但是,如果数字是0.05,我得到0.0500.我宁愿保持不变.
在JSbin上看到它.
做这个的最好方式是什么?
我可以考虑编写一些解决方案,但我想(我希望)内置这样的东西?
尝试从输入中排除减号和加号,但它出错了
handleChange(event) {
const value = event.target.value.replace(/\+|-/ig, '');
this.setState({financialGoal: value});
}
Run Code Online (Sandbox Code Playgroud)
渲染输入代码
<input style={{width: '150px'}} type="number" value={this.state.financialGoal} onChange={this.handleChange}/>
Run Code Online (Sandbox Code Playgroud) 这个问题是关于当用户将数据输入到类型编号的输入时限制/验证输入.
我遇到的问题是,当模型首次加载时,任何整数或1dp的数字只能用1dp渲染.例如40或40.0都显示为40.0(不是40.00).
我已添加此代码,以便在用户键入新值后,它显示为2dp:
在模板文件中:
(change)="setTwoNumberDecimal($event)"
Run Code Online (Sandbox Code Playgroud)
在组件文件中:
setTwoNumberDecimal($event) {
$event.target.value = parseFloat($event.target.value).toFixed(2);
}
Run Code Online (Sandbox Code Playgroud)
这可以在用户更改值后显示2dp .
我尝试编写一个指令,当数据最初加载时应该格式化为2dp,但是虽然该指令触发,但它不会将值更改为2dp.
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
@Directive ({
selector: '[fbDecimalFormat]'
})
export class DecimalFormatDirective {
constructor(private el: ElementRef,
private renderer: Renderer2) {
//renderer.setAttribute(el, 'value', parseFloat(el.nativeElement.value).toFixed(2));
this.el.nativeElement.value = parseFloat(this.el.nativeElement.value).toFixed(2);
}
}
Run Code Online (Sandbox Code Playgroud)
仅供参考,评论的渲染线不起作用(错误:setAttribute无法识别) - 这是尝试与平台无关.
所以问题是:我如何获得输入以2dps呈现其初始值?