ソースを参照

光标没有落入span禁止默认事件

liucf 6 年 前
コミット
0dd720981d

+ 25 - 1
src/common/components/EditableSpan/index.jsx

@@ -37,6 +37,7 @@ class EditableSpan extends Component{
     this.handleKeydown = this.handleKeydown.bind(this);
     this.handleKeyup = this.handleKeyup.bind(this);
     this.moveEnd = this.moveEnd.bind(this);
+    this.stopIt = this.stopIt.bind(this);
   }
   handleFocus(e){
     e.stopPropagation();
@@ -159,6 +160,15 @@ class EditableSpan extends Component{
     }
 
   }
+  stopIt(e){  
+    if(e.returnValue){  
+        e.returnValue = false ;  
+    }  
+    if(e.preventDefault ){  
+        e.preventDefault();  
+    }                 
+    return false;  
+  }  
   handleKeyup(e){
     const {boxMark,handleKeydown,i,value,removeId,handleClear,delSingleLable} = this.props;
     const {preVal,index} = this.state;
@@ -166,9 +176,14 @@ class EditableSpan extends Component{
     const target = ev.target||ev.srcElement;
     let innerVal = target.innerText;
     if(ev.keyCode==8){
+      const elem = ev.srcElement || ev.currentTarget;
+      const nodeN = elem.nodeName;
+      if(nodeN != "SPAN"){//光标没落到span的时候阻止默认事件(backspace回退页面的情况)
+        return this.stopIt(ev);
+      }
       // 主诉现病史去重:删除最后一个字的时候移除该数据(将name、id和value替换成空)并移除id
       // 前面是标签,内容为空时再删一次才移除标签;前面是文本,则直接移除;
-      // console.log(77,innerVal,preVal);
+      // console.log(77,elem,nodeN);
       let preObj = $(this.$span.current).prev();
       if(index!==0&&preVal.trim().length==1&& !innerVal){
           removeId && removeId({boxMark,i:index,text:""});
@@ -221,6 +236,15 @@ class EditableSpan extends Component{
     }
   }
 
+  /*cancelSelect(e){//双击不选中
+    if(document.selection&&document.selection.empty){
+        document.selection.empty();
+      }else if (window.getSelection) {
+        var sel=window.getSelection();
+        sel.removeAllRanges();
+      }
+    }*/
+
   getClass(){
     const {full,value,saveText,i} = this.props;
     const preSelected = saveText[i-1];

+ 4 - 2
src/modules/HomePage/index.less

@@ -11,9 +11,11 @@
     z-index: 9998;
 }
 .load{
+    width: 40px;
+    height: 40px;
     position: absolute;
     top: 50%;
     left:50%;
-    margin-top: -64px;
-    margin-left: -64px;
+    margin-top: -20px;
+    margin-left: -20px;
 }