javascript - 阻止用户输入大于 3 位小数的 float

标签 javascript validation reactjs precision decimal-point

我有一个使用以下代码进行 react 的输入字段:

const InputField = props => (
  <div className="input-row">
    <input
      {...props.input}
      type={props.type}
      className="form-control input-box__input"
      placeholder={props.placeholder}
      value={props.value}
      defaultValue={props.defaultValue}
      defaultChecked={props.defaultChecked}
      disabled={props.disabled}
      onChange={props.onChange}
      checked={props.checked}
    />
    {props.meta.touched && props.meta.error &&
    <span className="error">
        {props.intl.formatMessage({ id: props.meta.error }) }
      </span>}
  </div>
);

我想添加一个 validation 或更好的 preventDefault 属性,这样用户就不会输入小数点后三位以上的 float 。

如果用户输入这样的数字:1.234,它应该阻止用户输入更多数字,尽管用户在键盘上打字。关于如何实现这一点有什么想法吗?

最佳答案

就像其他人建议的那样,使用 onKeyDown 事件来限制输入。快速而肮脏的例子:https://jsfiddle.net/bv9d3bwk/2/

const InputField = props => (
  <div className="input-row">
    <input
      {...props.input}
      type={props.type}
      className="form-control input-box__input"
      placeholder={props.placeholder}
      value={props.value}
      defaultValue={props.defaultValue}
      defaultChecked={props.defaultChecked}
      disabled={props.disabled}
      onChange={props.onChange}
      onKeyDown={this.onKeyDown}
      checked={props.checked}
    />
    {props.meta.touched && props.meta.error &&
    <span className="error">
        {props.intl.formatMessage({ id: props.meta.error }) }
      </span>}
  </div>
);

const onKeyDown = (e) => {
    const decimal_index = e.target.value.indexOf('.');
    if(decimal_index > -1){
        var decimals = e.target.value.substring(decimal_index, e.target.value.length+1);
        if(decimals.length > 4 && e.keyCode !== 8){
           e.preventDefault();
        }
        //this.props.onChange();
    }
}

关于javascript - 阻止用户输入大于 3 位小数的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203020/

相关文章:

python - Django 提供过时的表单验证选项

javascript - 如何从屏幕中的组件获取 Prop ?

reactjs - Toast 未渲染(react-toastify 组件)

javascript - Protractor 返回 Promise 而不是属性值

javascript - 整理出所有含有 'unread = true'的消息

java - 类的构造函数参数是否也应该使用 Java Bean Validation API 注释进行注释?

javascript - 导入 React,{Component} 而不仅仅是 React 有什么好处?

javascript - 您将如何在控制台中终止无限循环 (`setInterval` )?

javascript - Angularjs:为什么页面刷新会破坏 $rootScope 的值?

php - 验证值有两种可能的类型