代码之家  ›  专栏  ›  技术社区  ›  Vinayak B

如何在React native IOS中禁用数字文本输入中的其他字符输入?

  •  0
  • Vinayak B  · 技术社区  · 6 年前

    我喜欢禁用除文本输入中的数字以外的所有其他字符输入。我尝试了很多这样的例子,但所有这些例子都只适用于android,而不适用于iOS。下面是我试过的例子。

     export default class App extends Component<Props> {
          onChange(text) {
            let newText = '';
            let numbers = '0123456789';
    
            for (var i = 0; i < text.length; i++) {
              if (numbers.indexOf(text[i]) > -1) {
            newText = newText + text[i];
          }
        }
        this.setState({ data: { code: newText }})
      }
      state = {
        data: {
          code: '',
          phoneNo: '',
          otp: ''
        }
      }
      render() {
        const data = { ...this.state.data }
        return (
          <View style={styles.container}>
    
            <TextInput
              onChangeText={(value) => {
                value = value.replace(/[^0-9]/g, "")
                this.onChange(value)
    
              }
              }
              placeholder='phone number'
              value={data.code}
              keyboard='phone-pad' />
    
            <Text style={styles.instructions}>
              {data.code}
            </Text>
          </View>
        );
      }
    }
    

    这段代码在android中运行得很好,但是当我在iOS上运行时,我仍然可以输入其他字符而不是数字。但是当我对日志进行控制台操作时,状态变量只有数值。即,

    • +()'. 这将显示在textinput上,但状态变量值将为空。
    • 替换所有东西,只显示9。
    • 如果我把 +(){} 9.文本输入显示 9+(){} 状态变量的值只有9。

    0 回复  |  直到 6 年前