浏览代码

兼容firefox43

Luolei 6 年之前
父节点
当前提交
cfc1a778fc

+ 3 - 3
src/common/components/InlineTag/index.jsx

@@ -55,15 +55,15 @@ class InlineTag extends Component {
   handleBlur(e){         //鼠标离开是保存值到store中
     const {value} = this.state;
     const {handleInput,ikey,prefix,suffix} = this.props;
-    this.$span.current.innerText='';      //修改生成文字变成输入的2倍bug
+    this.$span.current.innerText?(this.$span.current.innerText=''):(this.$span.current.innerHTML='');      //修改生成文字变成输入的2倍bug
     handleInput&&handleInput({text:value,ikey,prefix,suffix});
   }
   handleFocus(e){
     e.stopPropagation();
-    const text = e.target.innerText;
+    const text = e.target.innerText || e.target.innerHTML;
     const {placeholder} = this.props;
     if(text==placeholder){
-      e.target.innerText = '';
+      e.target.innerText?(e.target.innerText = ''):(e.target.innerHTML='');
     }
   }
   getStyle(){

+ 1 - 1
src/common/components/NumberPan/index.jsx

@@ -11,7 +11,7 @@ class NumberPan extends Component{
   }
   handleSelect(e){
     e.stopPropagation();
-    const text = e.target.innerText;
+    const text = e.target.innerText || e.target.innerHTML;
     const value = this.props.toClear?'':this.state.value;     //键盘输入替换已有的值
     const onSelect = this.props.handleSelect;
     this.setState({

+ 1 - 1
src/common/components/NumberUnitPan/index.jsx

@@ -14,7 +14,7 @@ class NumberUnitPan extends Component{
   }
   handleSelect(e){
     e.stopPropagation();
-    const text = e.target.innerText;
+    const text = e.target.innerText || e.target.innerHTML;
     const preValue = this.state.value;
     if(+text==0 && !preValue){//第一位不能是0
       Notify.info("请输入正确时间");

+ 7 - 7
src/common/components/Textarea/index.jsx

@@ -22,9 +22,9 @@ class Textarea extends Component {
   handleFocus(){            //初始显示props中的值,focus已经显示输入的值,避免值更新闪烁
     const {handleFocus,fuzhen,handleInput} = this.props;
     handleFocus&&handleFocus();         //其他史、查体获取数据的方法
-    if(fuzhen&&!this.$dom.current.innerText){
+    if(fuzhen&&!(this.$dom.current.innerText?this.$dom.current.innerText:this.$dom.current.innerHTML)){
       const text = config.currentText.replace("(**)",fuzhen);
-      this.$dom.current.innerText = text;
+      this.$dom.current.innerText?(this.$dom.current.innerText = text):(this.$dom.current.innerHTML = text);
       handleInput&&handleInput({text});
     }
 
@@ -32,14 +32,14 @@ class Textarea extends Component {
   handleInput(e){
     const {handleInput,boxMark,handlePush,hasMain} = this.props;
     const {inpText,overFlag} = this.state;
-    const text = e.target.innerText;
+    const text = e.target.innerText || e.target.innerHTML;
     const stimer = this.state.timer;
     if(boxMark=='1'&&text.length>config.limited){           //主诉字符数限制
-      e.target.innerText = text.substr(0,config.limited); 
+      e.target.innerText?(e.target.innerText = text.substr(0,config.limited)):(e.target.innerHTML = text.substr(0,config.limited)); 
       e.target.blur();
       Notify.error(config.limitText);
       if(overFlag){
-        e.target.innerText = inpText;
+        e.target.innerText?(e.target.innerText = inpText):(e.target.innerHTML = inpText);
         return
       }
       this.setState({
@@ -78,13 +78,13 @@ class Textarea extends Component {
   componentWillReceiveProps(next){
     const isRead = this.props.isRead;
     if(next.isRead != isRead||next.value!=this.props.value){      //value对比解决复诊不显示bug
-      this.$dom.current.innerText = next.value||'';
+      this.$dom.current.innerText?(this.$dom.current.innerText = next.value||''):(this.$dom.current.innerHTML = next.value||'');
     }
   }
   componentDidMount(){
     const {value} = this.props;
     if(value){
-      this.$dom.current.innerText = value||'';
+      this.$dom.current.innerText?(this.$dom.current.innerText = value||''):(this.$dom.current.innerText=value||'');
     }
     if(isIE()){
       $(this.$dom.current).onIe8Input(function(e){

+ 12 - 11
src/components/AddAssistCheck/Textarea/index.jsx

@@ -10,9 +10,11 @@ class Textarea extends Component {
       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;
@@ -25,13 +27,11 @@ class Textarea extends Component {
       handlePush&&handlePush();
       clearTimeout(stimer);
     },config.delayPushTime);
-
     if(text.trim() != '' && text != '<br>'){
-      e.target.nextSibling.innerText = ''
-      e.target.nextSibling.innerHTML = ''
+      console.log(e.target.nextSibling)
+      e.target.nextSibling.innerText?(e.target.nextSibling.innerText = ''):(e.target.nextSibling.innerHTML = '')
     }else{
-      e.target.nextSibling.innerText = '报告描述或意见'
-      e.target.nextSibling.innerHTML = '报告描述或意见'
+      e.target.nextSibling.innerText?(e.target.nextSibling.innerText = '报告描述或意见'):(e.target.nextSibling.innerHTML = '报告描述或意见')
     }
     this.setState({
       timer
@@ -53,13 +53,14 @@ class Textarea extends Component {
     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.innerHTML = '';
+      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.innerHTML = '报告描述或意见'
+      this.$dom.current.nextSibling.innerText?(this.$dom.current.nextSibling.innerText = '报告描述或意见'):(this.$dom.current.nextSibling.innerHTML = '报告描述或意见')
     }
   }
+  handleFocus(){     //ie8下提示语挡住输入框,导致输入框无法聚焦
+    this.textInput.current.previousSibling.focus();
+  }
   render() {
     const {idx} = this.props;
     return (
@@ -68,9 +69,9 @@ class Textarea extends Component {
             contenteditable={true}
             ref={this.$dom}
             onInput={this.handleInput}
-            onPropertyChange={this.handleInput}
+            onKeyUp={this.handleInput}
         ></div>
-        <p style={{position: "absolute",left: '0',top: '0',color: "#a5a3a3",zIndex: '5'}} className="textareaWarring"></p>
+        <p ref={this.textInput} onClick={this.handleFocus} className={style.textareaWarring}></p>
       </div>
     );
   }

+ 4 - 5
src/components/MainSuit/index.jsx

@@ -175,7 +175,7 @@ class MainSuit extends Component{
 
   handleChange(e){
     const ev = e || window.event;
-    const data = ev.target.innerText;
+    const data = ev.target.innerText || ev.target.innerHTML;
     const {getSearchData,searchData,datas,pushMessage,reTotalHide,saveText} = this.props;
     const {overFlag,inpText} = this.state;
     reTotalHide && reTotalHide();//重置homePage中的控制项
@@ -183,11 +183,11 @@ class MainSuit extends Component{
     if(data&&data.length > config.limited){
       Notify.info(config.limitText);
       if(overFlag){
-        ev.target.innerText = inpText;
+        ev.target.innerText?(ev.target.innerText = inpText) : (ev.target.innerHTML = inpText);
         ev.target.blur();
         return
       }
-      ev.target.innerText = data.substr(0,config.limited);  //输入法内输入多个字再按enter的情况
+      ev.target.innerText?(ev.target.innerText = data.substr(0,config.limited)):(ev.target.innerHTML = data.substr(0,config.limited));  //输入法内输入多个字再按enter的情况
       ev.target.blur();
       
       this.setState({
@@ -230,8 +230,7 @@ class MainSuit extends Component{
     const that = this;
     let data = this.state.inpText;
     if(!isIE()){
-      e.target.innerText="";
-      e.target.innerHTML="";//兼容火狐43
+      e.target.innerText?(e.target.innerText=""):(e.target.innerHTML="")
       freeText && freeText(data.trim());
     }else{
       if(datas.length==0){

+ 1 - 1
src/components/MultSpread/index.jsx

@@ -118,7 +118,7 @@ class MultSpread extends Component{
     this.setState({
       editable: false
     });
-    let totalVal = e.target.innerText;
+    let totalVal = e.target.innerText || e.target.innerHTML;
     saveEditText && saveEditText({ikey,type:'4',totalVal});
   }
   componentDidMount(){

+ 5 - 5
src/components/Multiple/index.jsx

@@ -99,7 +99,7 @@ class Multiple extends react.Component{
 
   changeToEdit(e){//双击
     const {value,id,placeholder,handleDbclick,handleHide} = this.props;
-    let text = e.target.innerText;
+    let text = e.target.innerText || e.target.innerHTML;
     handleHide&&handleHide();       //展开情况下双击收起
     // clearTimeout(this.state.timer);//取消延时的单击事件
     e.stopPropagation();
@@ -135,11 +135,11 @@ class Multiple extends react.Component{
     const {labelVal,editable} = this.state;
     let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
-      let val = e.target.innerText;
+      let val = e.target.innerText || e.target.innerHTML;
       if(+type==1){// 主诉字数达到上限时不允许输入
         if(mainText.length >= config.limited){
           if(val.length > labelVal.length){
-            e.target.innerText = labelVal;
+            e.target.innerText?(e.target.innerText = labelVal):(e.target.innerHTML = labelVal);
             Notify.info(config.limitText);
             return
           }else if(val.length == labelVal.length){
@@ -161,9 +161,9 @@ class Multiple extends react.Component{
     const ev = e || window.event;
     if(editable){
       // 更改标签的value值
-      let changeVal = ev.target.innerText;
+      let changeVal = ev.target.innerText || e.target.innerHTML;
       if(!isIE()){
-        e.target.innerText = '';      //避免出现重复输入值
+        e.target.innerText?(e.target.innerText = ''):(e.target.innerHTML='');      //避免出现重复输入值
       }
       handleLabelChange && handleLabelChange({ikey,changeVal,type});
     }

+ 6 - 6
src/components/NumberDrop/index.jsx

@@ -87,10 +87,10 @@ class NumberDrop extends Component{
     this.setState({
       hasSelect:false
     });
-    const val = e.target.innerText.replace(/^\s*/,'');
+    const val = e.target.innerText?e.target.innerText.replace(/^\s*/,''):e.target.innerHTML.replace(/^\s*/,'');
     const {handleSelect,ikey,suffix,prefix,mainSaveText,placeholder} = this.props;
     const text = val===placeholder?'':val;
-    e.target.innerText = '';      //避免出现重复输入值
+    e.target.innerText? (e.target.innerText = ''):(e.target.innerHTML='');      //避免出现重复输入值
     handleSelect&&handleSelect({ikey,text,suffix,prefix,mainSaveText});
   }
   handleSpanInp(e){   //数字框输入事件
@@ -129,10 +129,10 @@ class NumberDrop extends Component{
     this.setState({
       editable: false
     });
-    let totalVal = e.target.innerText;
-    let changeVal = this.$span.current.innerText.replace(/^\s*/,'');//数字框值-修改后;去掉前空格避免多空格叠加
-    let prefix = this.$pre.current.innerText.replace(/^\s*/,''); //前缀值-修改后
-    let suffix = this.$suf.current.innerText.replace(/^\s*/,''); //后缀值-修改后
+    let totalVal = e.target.innerText || e.target.innerHTML;
+    let changeVal = this.$span.current.innerText?this.$span.current.innerText.replace(/^\s*/,''):this.$span.current.innerHTML.replace(/^\s*/,'');//数字框值-修改后;去掉前空格避免多空格叠加
+    let prefix = this.$pre.current.innerText?this.$pre.current.innerText.replace(/^\s*/,''):this.$pre.current.innerHTML.replace(/^\s*/,''); //前缀值-修改后
+    let suffix = this.$suf.current.innerText?this.$suf.current.innerText.replace(/^\s*/,''):this.$suf.current.innerHTML.replace(/^\s*/,''); //后缀值-修改后
     //console.log('数字框:'+changeVal,";全部:"+totalVal,";前缀:"+prefix+";后缀:"+suffix);
     handleLabelChange && handleLabelChange({ikey,changeVal,type:boxMark,totalVal,prefix,suffix});
   }

+ 4 - 4
src/components/NumberUnitDrop/index.jsx

@@ -88,7 +88,7 @@ class NumberUnitDrop extends Component{
     const {handleSelect,ikey,suffix,prefix,mainSaveText,handleLabelChange,boxMark} = this.props;
     const {editable} = this.state;
     if(editable){
-      const text = e.target.innerText;
+      const text = e.target.innerText || e.target.innerHTML;
       // this.$span.current.innerText='';      //修改生成文字变成输入的2倍bug 
       // handleSelect&&handleSelect({ikey,text,suffix,prefix,mainSaveText});
       handleLabelChange&&handleLabelChange({ikey,changeVal:text,suffix,prefix,mainSaveText,type:boxMark});
@@ -110,11 +110,11 @@ class NumberUnitDrop extends Component{
     const {labelVal,editable} = this.state;
     let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
-      let val = e.target.innerText;
+      let val = e.target.innerText || e.target.innerHTML;
       if(+boxMark==1){
         if(mainText.length >= config.limited){
           if(val.length > labelVal.length){
-            e.target.innerText = labelVal;
+            e.target.innerText?(e.target.innerText = labelVal):(e.target.innerHTML = labelVal);
             Notify.info(config.limitText);
             return
           }else if(val.length == labelVal.length){
@@ -144,7 +144,7 @@ class NumberUnitDrop extends Component{
   changeToEdit(e){        //整个标签双击编辑状态
     e.stopPropagation();
     const {value,id,handleDbclick,patId} = this.props;
-    const text = e.target.innerText;
+    const text = e.target.innerText || e.target.innerHTML;
     // clearTimeout(this.state.timer);//取消延时的单击事件
     if(value&&value.trim()) {//有选中值的标签才能双击编辑
       this.setState({

+ 1 - 1
src/components/Operation/index.jsx

@@ -84,7 +84,7 @@ class Operation extends Component {
   keepHistory(){
     let baseList = store.getState();
     let jsonStr = getAllDataStringList(baseList);
-    console.log(jsonStr)
+    // console.log(jsonStr)
     if(filterDataArr(JSON.parse(jsonStr.chief)) == ''){
         Notify.info('主诉不能为空');
         return false;

+ 5 - 5
src/components/SpreadDrop/index.jsx

@@ -94,7 +94,7 @@ class SpreadDrop extends Component{
 
   changeToEdit(e){//双击
     const {value,id,placeholder,handleDbclick,handleHide} = this.props;
-    let text = e.target.innerText;
+    let text = e.target.innerText || e.target.innerHTML;
     handleHide&&handleHide();       //展开情况下双击收起
     // clearTimeout(this.state.timer);//取消延时的单击事件
     e.stopPropagation();
@@ -117,11 +117,11 @@ class SpreadDrop extends Component{
     const {labelVal,editable} = this.state;
     let mainText = filterDataArr(mainSaveText);//主诉字数
     if(editable){//避免IE中点击标签也会触发
-      let val = e.target.innerText;
+      let val = e.target.innerText || e.target.innerHTML;
       if(+type==1){// 主诉字数达到上限时不允许输入
         if(mainText.length >= config.limited){
           if(val.length > labelVal.length){
-            e.target.innerText = labelVal;
+            e.target.innerText?(e.target.innerText = labelVal):(e.target.innerHTML = labelVal);
             Notify.info(config.limitText);
             return
           }else if(val.length == labelVal.length){
@@ -143,9 +143,9 @@ class SpreadDrop extends Component{
     const ev = e || window.event;
     if(editable){
       // 更改标签的value值
-      let changeVal = ev.target.innerText;
+      let changeVal = ev.target.innerText || ev.target.innerHTML;
       if(!isIE()){
-        e.target.innerText = '';      //避免出现重复输入值
+        e.target.innerText?(e.target.innerText = ''):(e.target.innerHTML = '');      //避免出现重复输入值
       }
       handleLabelChange && handleLabelChange({ikey,changeVal,type});
     }

+ 2 - 2
src/store/actions/checkBody.js

@@ -197,7 +197,7 @@ export function insertLabelData(state,action){
   let reg = searchInEnd?new RegExp(searchStr+"$"):new RegExp("^"+searchStr);
   const newText=showText.replace(reg,'')||'';
   if(!isReplace){
-    span.current.innerText = newText;
+    span.current.innerText?(span.current.innerText = newText):(span.current.innerHTML = newText);
     const pText = Object.assign({},text,{value:newText});
     if(searchInEnd){
       res.data.splice(index,1,pText,...spreadLabels,text);
@@ -212,7 +212,7 @@ export function insertLabelData(state,action){
     }
 
   }else{
-    span.current.innerText = ' ';
+    span.current.innerText?(span.current.innerText = ' '):(span.current.innerHTML = ' ');
     if(searchInEnd){
       res.data.splice(index+1,0,spreadLabels,text);
       res.saveText.splice(index+1,0,'','');

+ 3 - 3
src/store/actions/currentIll.js

@@ -530,7 +530,7 @@ export function insertLabelData(state,action){
   let banIdx = saveText.indexOf("伴");
   
   if(isReplace){
-    span.current.innerText = '';
+    span.current.innerText?(span.current.innerText = ''):(span.current.innerHTML = '');
     // res.data.splice(focusIndex,1,text,data);
     // 搜索结果展开伴随symptomType==2的尾巴
     let resData = JSON.parse(JSON.stringify(res.data));
@@ -543,7 +543,7 @@ export function insertLabelData(state,action){
     let resData;
     // res.data.splice(index,0,data);
     const searchStr = res.searchStr;
-    let innerText = span.current.innerText;
+    let innerText = span.current.innerText || span.current.innerHTML;
     let strIndex = innerText.indexOf(searchStr);
     const value = innerText.replace(searchStr,"");
     // 没有伴展开主诉symptomType=0/1的尾巴,有伴一>第一个点选上去的伴为依据,伴前展开主诉,伴后展开伴随;多余的伴以及手动输入的伴不做处理(2-25)
@@ -611,7 +611,7 @@ export function insertLabelData(state,action){
         }
       }
     }
-    span.current.innerText = value;
+    span.current.innerText?(span.current.innerText = value):(span.current.innerHTML = value);
     res.data = fullfillText(resData).newArr;
     res.saveText = fullfillText(resData).saveText;
   }

+ 2 - 2
src/store/actions/mainSuit.js

@@ -358,7 +358,7 @@ export const insertSearch = (state,action)=>{
 
     // 从新插入一个span标签
     const searchStr = res.searchStr;
-    let innerText = span.current.innerText;
+    let innerText = span.current.innerText || span.current.innerHTML;
     const value = innerText.replace(searchStr,"");
     let index = innerText.indexOf(searchStr);
     if(index < 1){//前
@@ -376,7 +376,7 @@ export const insertSearch = (state,action)=>{
       res.saveText.splice(focusIndex+1,0,searchData);
       res.data[focusIndex].value = value;
     }
-    span.current.innerText = value;
+    span.current.innerText?(span.current.innerText = value):(span.current.innerHTML=value);
     res.mainIds.push(id);
   }
   // console.log(456,res,action);

+ 2 - 2
src/store/actions/otherHistory.js

@@ -187,7 +187,7 @@ export function insertLabelData(state,action){
   let reg = searchInEnd?new RegExp(searchStr+"$"):new RegExp("^"+searchStr);
   const newText=showText.replace(reg,'')||' ';
   if(!isReplace){
-    span.current.innerText = newText;
+    span.current.innerText?(span.current.innerText = newText):(span.current.innerHTML = newText);
     const pText = Object.assign({},text,{value:newText});
     if(searchInEnd){
       res.data.splice(index,1,pText,...spreadLabels,text);
@@ -200,7 +200,7 @@ export function insertLabelData(state,action){
       res.selecteds.splice(index,1,...new Array(spreadLabels.length).fill(null),null,null);
     }
   }else{
-    span.current.innerText = ' ';
+    span.current.innerText?(span.current.innerText = ' '):(span.current.innerHTML = ' ');
     if(searchInEnd){
       res.data.splice(index+1,0,spreadLabels,text);
       res.saveText.splice(index+1,0,'','');