瀏覽代碼

backspace删除光标位置兼容IE8

liucf 6 年之前
父節點
當前提交
e36be2ba4d

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

@@ -113,23 +113,17 @@ class EditableSpan extends Component{
   }
 
   moveEnd(obj) {
-    obj.focus();
-    if($.support.msie)
-    {
-        var range = document.selection.createRange();
-        this.last = range;
-        range.moveToElementText(obj);
-        range.select();
-        document.selection.empty(); //取消选中
+    if(window.getSelection){//ie11 10 9 ff safari
+      obj.focus(); //解决ff不获取焦点无法定位问题
+      var range = window.getSelection();//创建range
+      range.selectAllChildren(obj);//range 选择obj下所有子内容
+      range.collapseToEnd();//光标移至最后
     }
-    else
-    {
-        var range = document.createRange();
-        range.selectNodeContents(obj);
-        range.collapse(false);
-        var sel = window.getSelection();
-        sel.removeAllRanges();
-        sel.addRange(range);
+    else if (document.selection) {//ie10 9 8 7 6 5
+      var range = document.selection.createRange();//创建选择对象
+      range.moveToElementText(obj);//range定位到obj
+      range.collapse(false);//光标移至最后
+      range.select();
     }
   }
 
@@ -159,16 +153,10 @@ class EditableSpan extends Component{
     let innerVal = target.innerText;
     if(ev.keyCode==8){
       // 主诉现病史去重:删除最后一个字的时候移除该数据(将name、id和value替换成空)并移除id
-      let pattern1 = new RegExp(/^\,|^\,|^\.|^\。|^\、|^\;|^\;|^\:|^\:/);
-      if(pattern1.test(preVal)){//以标点开头的情况-现病史
-        if(preVal.trim().length==2){
+      if(preVal.trim().length==1){
           removeId && removeId({boxMark,i:index,text:""});
+          // this.moveEnd(obj[0]);
         }
-      }else{
-        if(preVal.trim().length==1){
-          removeId && removeId({boxMark,i:index,text:""});
-        }
-      }
       
       if(innerVal !==preVal){return false}
       let data = innerVal.trim();

+ 2 - 1
src/components/CurrentIll/index.jsx

@@ -72,7 +72,8 @@ class CurrentIll extends Component{
   }
 
   onchange(e){//监听输入事件,主诉无数据不能输入
-    e.target.innerText = "";
+    const ev = e || window.event;
+    ev.target.innerText = "";
   }
 
   handleClick(e){//让搜索框跟随鼠标点击移动

+ 2 - 1
src/components/RadioDrop/index.jsx

@@ -105,7 +105,8 @@ class RadioDrop extends Component{
       editable:false
     });  
    // 更改标签的value值
-    let changeVal = e.target.innerText;
+    const ev = e || window.event;
+    let changeVal = ev.target.innerText;
     handleLabelEdit && handleLabelEdit({ikey,changeVal,type:boxMark});
   }
   handledbClick(e){

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

@@ -122,10 +122,13 @@ class SpreadDrop extends Component{
     e.stopPropagation();
     const {ikey,type,handleLabelChange} = this.props;
     const {editable} = this.state;
+    const ev = e || window.event;
     if(editable){
       // 更改标签的value值
-      let changeVal = e.target.innerText;
-      e.target.innerText = '';      //避免出现重复输入值
+      let changeVal = ev.target.innerText;
+      if(!isIE()){
+        e.target.innerText = '';      //避免出现重复输入值
+      }
       handleLabelChange && handleLabelChange({ikey,changeVal,type});
     }
     this.setState({

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

@@ -471,7 +471,7 @@ export function setCheckText(state,action) {
     //res.data[i].name='';      //默认显示的文字
   }
   res.saveText[i] = text;
-  res.update = Math.random();console.log(3333,action,res);
+  res.update = Math.random();
   return res;
 }
 

+ 4 - 3
src/store/actions/mainSuit.js

@@ -452,11 +452,11 @@ export function setRadioValue(state,action){
 //双击标签输入改变值
 export const changeLabelVal = (state,action)=>{
   const res = Object.assign({},state);
-  const index = action.data.ikey;
+  const index = parseInt(action.data.ikey);
   const newVal = action.data.changeVal;
   let data = res.data;
   let item = data[index];
-  if(newVal.trim()){
+  if(newVal&&newVal.trim()){
     if(item){
       item.value = newVal;
       res.saveText[index] = newVal;
@@ -464,9 +464,10 @@ export const changeLabelVal = (state,action)=>{
   }else{//删除完标签内容则删除该标签
     
     data.splice(index,1);
+    // data[index].value = "";
     // res.data.splice(index,1);
-    // res.saveText = fullfillText(res.data).saveText;
     res.saveText.splice(index,1);
+    // res.saveText[index] = "";
   } 
   res.update = Math.random();
   return res;