import React, { Component } from "react"; import style from "./index.less"; import config from '@config/index'; import $ from 'jquery'; import { setFontColorSize,moveEnd} from '@utils/tools'; import store from '@store'; import { embedPush } from '../../../store/async-actions/pushMessage' class Textarea extends Component { constructor(props) { super(props); this.state = { timer:null, val:'报告描述或意见' }; this.textInput = React.createRef(); this.$dom = React.createRef(); this.$domW = React.createRef(); this.handleInput = this.handleInput.bind(this); this.handleFocus = this.handleFocus.bind(this); } handleInput(e){ const {handleChangeAssistValue,idx,handlePush} = this.props; const text = (e.target.innerText || e.target.innerHTML||e.target.textContent); $(e.target).find('img').remove(); this.context.scrollArea.scrollBottom(); //避免滚动条上移不见 // e.target.innerHTML = e.target.textContent const stimer = this.state.timer; handleChangeAssistValue&&handleChangeAssistValue(text,idx); //右侧推送--延时推送 clearTimeout(stimer); let timer = setTimeout(function(){ handlePush&&handlePush({mode:9}); clearTimeout(stimer); },config.delayPushTime); if(text.trim() != '' && text != '
'){ e.target.nextSibling.innerText?(e.target.nextSibling.innerText = ''):(e.target.nextSibling.innerHTML = '') }else{ e.target.nextSibling.innerText?(e.target.nextSibling.innerText = '报告描述或意见'):(e.target.nextSibling.innerHTML = '报告描述或意见') } $(".TextareaRsize").css({marginTop:0}); this.setState({ timer }); } shouldComponentUpdate(next){ if(JSON.stringify(next) == JSON.stringify(this.props)){ return false; } return true; } componentWillReceiveProps(next){ const isRead = this.props.isRead; if(next.isRead != isRead){ this.$dom.current.innerText?(this.$dom.current.innerText = next.value||'') : (this.$dom.current.innerHTML = next.value||'') if(next.value && next.value.trim()){ this.$dom.current.nextSibling.innerText = '' }else{ this.$dom.current.nextSibling.innerHTML = '报告描述或意见' } } } componentDidMount(){ const {value} = this.props; if(value && value.trim()){ this.$dom.current.innerText?(this.$dom.current.innerText = value) : (this.$dom.current.innerHTML = value) this.$dom.current.nextSibling.innerText?(this.$dom.current.nextSibling.innerText = ''):(this.$dom.current.nextSibling.innerHTML = '') }else{ this.$dom.current.nextSibling.innerText?(this.$dom.current.nextSibling.innerText = '报告描述或意见'):(this.$dom.current.nextSibling.innerHTML = '报告描述或意见') } const that = this; let txt = ''; //黏贴时去掉html格式 $(this.$dom.current).on("paste",function(e){ setTimeout(function(){ txt = that.$dom.current.innerText||that.$dom.current.innerHTML; that.$dom.current.innerHTML = txt; moveEnd($(that.$dom.current)[0]); //光标落到最后去 }); }) } componentWillUnmount(){ $(this.$dom.current).off("paste"); } handleFocus(){ //ie8下提示语挡住输入框,导致输入框无法聚焦 store.dispatch(embedPush({ action: "pacs", mode: 1 })) this.textInput.current.previousSibling.focus(); } render() { const {idx,disabled} = this.props; return (

); } } Textarea.contextTypes = { scrollArea: React.PropTypes.object }; export default Textarea;