Javascript 如何获取输入数字字段中的小数以注册其值?
我在ReactJS中有一个输入字段:Javascript 如何获取输入数字字段中的小数以注册其值?,javascript,html,reactjs,input,Javascript,Html,Reactjs,Input,我在ReactJS中有一个输入字段: <input type="number" onKeyPress={handleKeyPress} maxLength={3} min="0" max="999" step=".1" onPaste={handlePaste} pattern="[0-9]*" /> 当我记录e.target.value并在输入字段中键入…时,小数不注册。为什么会这样?我怎样才能让他们注册 谢谢。试着
<input
type="number"
onKeyPress={handleKeyPress}
maxLength={3}
min="0"
max="999"
step=".1"
onPaste={handlePaste}
pattern="[0-9]*"
/>
当我记录
e.target.value
并在输入字段中键入…
时,小数不注册。为什么会这样?我怎样才能让他们注册
谢谢。试着用step=“any”设置输入标签
这是因为您使用了
onKeyPress
事件,该事件将同时触发向下键和向上键。因此,当按下键时,初始值为空 只有在更改发生后,才能使用
onChange
事件触发处理程序:
onChange={handleKeyPress}
运行示例:
功能手柄按键(e){
调试器
console.log(如target.value);
如果(e.target.value.length>=e.target.maxLength){
e、 target.value=e.target.value.slice(0,e.target.maxLength);
e、 预防默认值();
返回;
}
const key=e.key;
如果(!allowChars(键)){
e、 预防默认值();
}
}
函数allowChars(charValue){
const acceptedKeys='0123456789';
返回acceptedKeys.indexOf(charValue)>-1;
}
函数handlePaste(事件){
event.preventDefault();
}
常量应用=()=>(
);
ReactDOM.render(,document.getElementById('root'))代码>
您的模式
属性不允许
。将其更改为pattern=“[0-9.]*”
不过,可能不需要使用模式
。因为它是type=“number”
,所以它应该只允许有效的数字,这使得模式冗余。你说的“小数不注册”是什么意思?当我记录e.target.value
并在输入字段中键入小数时,输入的值记录为空。你是说这个代码吗<代码>控制台.log(例如,target.value.length)
您正在记录长度
…@Sagivb.g编辑了我的代码,谢谢。没有记录小数点。您是说
(点)本身没有任何数字吗?我不确定我是否理解您的意思。如果运行我的代码段,有什么没有被记录?请记住,输入类型编号将
onChange={handleKeyPress}