Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取输入数字字段中的小数以注册其值?_Javascript_Html_Reactjs_Input - Fatal编程技术网

Javascript 如何获取输入数字字段中的小数以注册其值?

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并在输入字段中键入…时,小数不注册。为什么会这样?我怎样才能让他们注册 谢谢。试着

我在ReactJS中有一个输入字段:

<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}