1. 程式人生 > >iview彈出對話方塊的input框每次都自動聚焦focus

iview彈出對話方塊的input框每次都自動聚焦focus

1.在html裡面設定autofocus屬性。

但不難發現只會觸發一次,每次在執行起來的時候就執行了獲得焦點,之後點選就無效了。


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);
              }
            }
         }