当前位置: 首页 > 知识库问答 >
问题:

仅接受数字字符的React本机文本输入

曹旭东
2023-03-14

我需要一个React NativeTextInput组件,它只允许输入数字字符(0-9)。我可以将keyboardType设置为numeric,这几乎可以让我在那里输入,除了句点()。但是,这并不能阻止将非数字字符粘贴到字段中。

到目前为止,我想出的是使用OnChangeText事件来查看输入的文本。我从文本中删除任何非数字字符。然后将文本放在状态字段中。然后通过它的值属性更新TextInput。代码片段如下。

<TextInput 
  style={styles.textInput}
  keyboardType = 'numeric'
  onChangeText = {(text)=> this.onChanged(text)}
  value = {this.state.myNumber}
/> 

onTextChanged(text) {
  // code to remove non-numeric characters from text
  this.setState({myNumber: text})
}

这似乎工作,但它似乎像一个黑客。还有别的办法吗?

共有3个答案

南门祯
2023-03-14

这是正确的方法,直到这样的组件(或TextInput上的属性)被专门开发出来。

web具有用于输入元素的数字类型,但这是基于web的,react-母语不使用Web视图。

您可以考虑将该输入作为它自己的一个反作用组件(也许调用NoMbEnter)创建:这将使您能够重用它,甚至可以打开它,因为您可以创建许多具有不同值过滤器/检查器的TcTeTPUT。

立即纠正的缺点是确保向用户提供正确的反馈,以防止混淆其价值发生了什么

姚淳
2023-03-14

你可以这样做。它将只接受数字值,并限制为10个数字作为您的愿望。

<TextInput 
   style={styles.textInput}
   keyboardType='numeric'
   onChangeText={(text)=> this.onChanged(text)}
   value={this.state.myNumber}
   maxLength={10}  //setting limit of input
/>

通过在页面中写入以下代码,可以查看输入的值:

{this.state.myNumber}

在onChanged()函数中,代码如下所示:

onChanged(text){
    let newText = '';
    let numbers = '0123456789';

    for (var i=0; i < text.length; i++) {
        if(numbers.indexOf(text[i]) > -1 ) {
            newText = newText + text[i];
        }
        else {
            // your call back function
            alert("please enter numbers only");
        }
    }
    this.setState({ myNumber: newText });
}

我希望这对其他人有帮助。

周和志
2023-03-14

与其他答案一样,使用RegExp替换任何非数字要比使用带有白名单的for循环快。

对您的onTextChange处理程序使用此选项:

onChanged (text) {
    this.setState({
        mobile: text.replace(/[^0-9]/g, ''),
    });
}

性能测试:https://jsperf.com/removing-non-digit-characters-from-a-string

 类似资料:
  • 注意:下面我讨论的文本字段是一个MFXTextField,我从MaterialFX获得。 我已经搜索了很多关于如何在JavaFX中创建只接受数字的文本字段的内容。我发现了很多视频和帖子,但它们都不适合我,可能是因为它们太老了,只在过去工作过,我真的不知道。 所以,我有一个信用卡文本字段,我需要它来拒绝字母或数字以外的任何内容。这是我的文本字段: 下面是我的代码,它为常规TextField接受Tex

  • 下面是关于如何限制字符输入长度的代码 可以通过

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持CopyPaste,Drag+Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE9以后的所有浏览器 : 现在,您可以使用

  • 当我尝试对输入进行限制时,我在java中遇到了很多麻烦。在此示例中,我需要字符串代码仅接受和等符号。我如何检查以确保没有数字、字母或其他符号?谢谢

  • 问题内容: 有没有一种快速的方法来将HTML文本输入()设置为仅允许数字键击(加’。’)? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 JavaScript 您可以使用以下功能过滤文本的输入值(支持Copy + Paste,Drag + Drop,键盘快捷键,上下文菜单操作,不可键入的键,插入标记的位置,不同的键盘布局以及IE 9以后的所有浏览器) : 现

  • 本文向大家介绍js计算文本框输入的字符数,包括了js计算文本框输入的字符数的使用技巧和注意事项,需要的朋友参考一下 使用JavaScript实时的计算用户当前输入的字符数函数代码: javascript实现统计字符数很简单,上面分享给大家的代码可以直接使用,希望对大家的学习有所帮助。