代码之家  ›  专栏  ›  技术社区  ›  Dan With The Plan

React电话号码输入格式和无格式输出

  •  0
  • Dan With The Plan  · 技术社区  · 6 年前

    我正在尝试在输入中创建电话号码格式 下面的输出没有电话号码格式。 我还想添加一个条件,如果用户键入的条目超过10个,则输入中将不会有更多的电话格式。

    另外,如果没有react number格式库,请让我知道有什么方法可以做到这一点。

    应用程序js
    import React, { Component } from 'react';
    import NumberFormat from 'react-number-format';
    
    class App extends Component {
      state ={
      userInput: ''
    }
    
    
      inputChangedHandler = (event) => { 
       this.setState({userInput: event.target.value});
       }
      render() {
        return (
          <div className="App">
            <input type="number"
            name="phoneNumberInput"
            placeholder='Phone Number Here'
            onChange={this.inputChangedHandler}
            value={this.state.userInput}/>
            <p><strong>Value: </strong>+1{this.state.userInput}</p>
            <NumberFormat 
            format="(###) ###-####" mask=""
            name="phoneNumberInput"
            placeholder='Phone Number Here'
            onChange={this.inputChangedHandler}
            value={this.state.userInput}/>
            <p><strong>Value: </strong>+1{this.state.userInput}</p>
            </div>
        );
      }
    }
    
    export default App;
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Ryan C    6 年前

    react-number-format documentation 你可以利用 onValueChange 返回 values object 是的。

      inputChangedHandler = (values) => {
        this.setState({
          userInput: values,
        });
      }
    

    然后我们用 this.state.userInput.value 以获取未格式化的值。

    <NumberFormat
      format="(###) ###-####"
      mask=""
      name="phoneNumberInput"
      placeholder="Phone Number Here"
      onValueChange={this.inputChangedHandler}
      value={this.state.userInput.value}
    />
    <p><strong>Value: </strong>+1{this.state.userInput.value}</p>