日期文本输入的自动反斜杠React Native?

时间:2018-10-31 18:42:57

标签: react-native textinput

有人知道如何创建文本输入,当您开始输入时,它会自动允许一定数量的数字,并自动对数字进行反斜杠分隔。

DD / MM / YYYY (我不想使用日期选择器或库)。

3 个答案:

答案 0 :(得分:1)

您可以使用类似这样的内容:

<TextInput
  onChangeText={(text) => this.handleTextChange({text})}
  value={this.state.text}
/>

handleTextChange()中,对插入的文本进行任何所需的操作,然后将其设置为状态

答案 1 :(得分:0)

尝试使用此react组件:

https://github.com/benhurott/react-native-masked-text

安装

npm install react-native-masked-text --save

用法

render() {
//the type is required but options is required only for some specific types.
  return (
    <TextInputMask
      refInput={(ref) => this.myDateText = ref;}
      type={'datetime'}
      options={{
        format: 'DD-MM-YYYY HH:mm:ss'
      }}
    />
  )
}

有一种适合您的口罩:

datetime:使用具有时间格式的日期时间掩码(默认DD / MM / YYYY HH:mm:ss)。它接受选项(请参阅本文档后面的内容)。

答案 2 :(得分:0)

checkValue(str, max) {
    if (str.charAt(0) !== '0' || str == '00') {
      var num = parseInt(str);
      if (isNaN(num) || num <= 0 || num > max) num = 1;
      str = num > parseInt(max.toString().charAt(0))
      && num.toString().length == 1 ? '0' + num : num.toString();
    };
    return str;
  };
    this.type = 'text';
    var input = e.target.value;
    var expr = new RegExp(/\D\/$/);
    if (expr.test(input)) input = input.substr(0, input.length - 3);
    var values = input.split('/').map(function(v) {
      return v.replace(/\D/g, '')
    });
    if (values[0]) values[0] = this.checkValue(values[0], 12);
    if (values[1]) values[1] = this.checkValue(values[1], 31);
    var output = values.map(function(v, i) {
      return v.length == 2 && i < 2 ? v + '/' : v;
    });
    this.setState({
      registrationDate:output.join('').substr(0, 14)
    })
  }
<input type="text" className="input-attr" maxLength="25" onChange={(e) => this.dateTimeInputChangeHandler(e)}
                           placeholder={translationData.datePlaceholderText}
                           value={this.state.registrationDate}/>

您可以使用类似的方法来实现它。 onchange事件将有助于处理输入。