iview弹出对话框的input框和table中input框每次都自动聚焦focus

一:弹出对话框的input框

1.在html里面设置autofocus属性。

但不难发现只会触发一次,每次在运行起来的时候就执行了获得焦点,之后点击就无效了。

iview弹出对话框的input框和table中input框每次都自动聚焦focus_第1张图片

2.在html里面设置v-focus

使用官方例子:

directives: {  
      focus: {  
        // 指令的定义  
        inserted: function (el) {  
          el.focus()  
        }  
      }  
    }  

发现不行,insert是一个钩子函数,只要父节点存在,在插入父节点时调用,我这里并没有插入所以没有调用。

然而自己修改后:

directives: {  
       focus:function (el) {  
         el.focus();  
       }  
    }  

发现还是不行,当把布局中的输入框改为input时就可以了。

3.由于先要使对话框弹出来,然后在让他自动获取焦点,所以要有先后顺序,在这里使用了modal的 on-visible-change属性,在为true时,再加上延时就可以啦。

methods:{
            aaa() {
                    this.modal1 = true;
                    console.log("111")
            },
            change(val)
                {
                    let a=this;
                    setTimeout(function () {
                        if (val) {
                            a.$refs['re'].focus();
                            console.log("222")
                        }
                    },200);
              }
            }
         }

iview弹出对话框的input框和table中input框每次都自动聚焦focus_第2张图片

 二:table中点击编辑显示的input框

   // 点击编辑修改目标值
        changEdit(val,val1){
          val.edit=2;
             let a=this;
            setTimeout(function(){
              let inputId="input"+val._index;
             var el =document.getElementById(inputId).children;
                for(let i =0,len=el.length;i

 

你可能感兴趣的:(iview弹出对话框的input框和table中input框每次都自动聚焦focus)