index.js 1.71 KB
import React, { Component } from 'react'
import { Picker} from 'antd-mobile';
import styles from  './InputModal.css';

class InputModal extends Component {
  constructor(props) {
    super(props);
    this.state = {
      value: props.value || '',
      id:props.id || 'input',
      placeholder:props.placeholder || '请输入',
    }
  }
  componentWillReceiveProps(nextProps){
    console.log('---------WILLreceiveprops------->',nextProps.value,this.state.value)
    if(nextProps.placeholder != this.state.placeholder || nextProps.value != this.state.value){
       this.setState({
          value:nextProps.value,
          placeholder:nextProps.placeholder,
        })
    }

  }
  onChange = (e)=>{
    let value = e.target.value
    value =  value.substring(0,10)
    this.setState({
      value :value
    })
  }
  blur =()=>{
      setTimeout(function(){
        if(document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA'){
          return
        }
        let result = 'pc';
        if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS
          result = 'ios'
        }else if(/(Android)/i.test(navigator.userAgent)) {  //判断Android
          result = 'android'
        }
        if( result = 'ios' ){
          document.querySelector('body').scrollIntoView();
        }
      },10)

  }
  render() {
    const { placeholder,value,id} = this.state;
    return (
      <input  className={styles.inputcss}
              id={id}
              placeholder={placeholder}
              value={value}
              type="number" 
              pattern="[0-9]*"
              onBlur={::this.blur}
              onChange={this.onChange}/>
    )
  }
}

export default InputModal