Przeglądaj źródła

搜索位置获取时机

Luolei 6 lat temu
rodzic
commit
f476a562e4
1 zmienionych plików z 19 dodań i 12 usunięć
  1. 19 12
      src/common/components/EditableSpan/index.jsx

+ 19 - 12
src/common/components/EditableSpan/index.jsx

@@ -148,7 +148,7 @@ class EditableSpan extends Component{
   handleKeydown(e){
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
-    let innerVal = target.innerText;
+    let innerVal = target.innerText || target.innerHTML;
     //禁止回车事件
     if(ev.keyCode==13){return false;}
     //backspace事件
@@ -173,14 +173,11 @@ class EditableSpan extends Component{
     const {preVal,index} = this.state;
     const ev = e||window.event;
     const target = ev.target||ev.srcElement;
-    let innerVal = target.innerText || target.innerHTML;
+    let innerVal = target.innerText || target.innerHTML,ele,boxTop;
     if(ev.keyCode==8){
       const elem = ev.srcElement || ev.currentTarget;
       const nodeN = elem.nodeName;
       
-      let ele = document.activeElement;
-      let boxTop = target.innerText?getPageCoordinate(e).boxTop:NaN;
-      setSearchLocation(boxTop,ele.offsetLeft)     //搜索框的位置动态获取
       if(nodeN != "SPAN"){//光标没落到span的时候阻止默认事件(backspace回退页面的情况)
         return this.stopIt(ev);
       }
@@ -189,14 +186,20 @@ class EditableSpan extends Component{
       // 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:""});
-          handleClear && handleClear({boxMark});//删除最后一个字时清空搜索结果,避免现病史搜索框不立即消失的情况
-          if(preObj[0].nodeName !=="DIV"){
-            this.moveEnd(preObj[0]);
-          }
+        removeId && removeId({boxMark,i:index,text:""});
+        handleClear && handleClear({boxMark});//删除最后一个字时清空搜索结果,避免现病史搜索框不立即消失的情况
+        if(preObj[0].nodeName !=="DIV"){
+          this.moveEnd(preObj[0]);
         }
-
-      if(innerVal !==preVal){return false}
+      }
+      if(innerVal !==preVal){
+        ele = document.activeElement;
+        boxTop = target.innerText?getPageCoordinate(e).boxTop:NaN;
+        if(filterDataArr(innerVal.split(''))){
+          setSearchLocation(boxTop,ele.offsetLeft)     //搜索框的位置动态获取
+        }
+        return false
+      }
       // 中英文数字和下划线--单独删除标签
       /*const reg = new RegExp("([\u4E00-\uFA29]|[\uE7C7-\uE7F3]|[a-zA-Z0-9_])");
       if(index!==0 && reg.test(innerVal)){
@@ -219,6 +222,10 @@ class EditableSpan extends Component{
           index: null
         })
       }
+      
+      ele = document.activeElement;
+      boxTop = target.innerText?getPageCoordinate(e).boxTop:NaN;
+      setSearchLocation(boxTop,ele.offsetLeft)     //搜索框的位置动态获取
     }
   }
   componentWillReceiveProps(next){