Vue2 & ElementUI實現(xiàn)管理后臺之input獲得焦點


在Vue中要給input設(shè)置焦點,需要注冊自定義指令。


    Vue.directive('focus', function (el, option) {
        var defClass = 'el-input', defTag = 'input';
        var value = option.value || true;
        if (typeof value === 'boolean')
            value = { cls: defClass, tag: defTag, foc: value };
        else
            value = { cls: value.cls || defClass, tag: value.tag || defTag, foc: value.foc || false };
        if (el.classList.contains(value.cls) && value.foc)
            el.getElementsByTagName(value.tag)[0].focus();
    });

由于ElementUI中的el-input是一個自定義組件,并非input元素,所以需要傳入組件的class和tag名稱來定位組件內(nèi)的原生input,并調(diào)用input的focus方法來獲得焦點。

使用的時候,分兩種情況:

頁面中只有一個組件用到focus指令


<el-input v-focus="true"></el-input>

頁面中有多個組件用到focus指令

此時,需要傳入class和tag來定位具體的元素


<el-input-number v-focus="{ cls: 'el-input-number',tag: 'input', foc: focus.count }"  v-on:blur="focus.count=false"></el-input-number>

補充說明:

在實際用focus指令的過程中,需要給元素添加blur事件: v-on:blur="focus.count=false"。失去焦點后一定要把focus指令對應(yīng)的變量置為false,否則會導(dǎo)致一些不可控的bug。

參考資料:

[1] : https://cn.vuejs.org/v2/guide/custom-directive.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,178評論 0 29
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評論 18 399
  • 古人不見今時月,今月曾經(jīng)照古人。 先到為君,后到為臣。 莫道君行早,更有早行人。 莫信直中直,須防仁不仁。 山中有...
    祝福六月閱讀 605評論 0 1
  • 一直感覺自己很幸運,以前領(lǐng)導(dǎo)說我是傻人有傻福,想想不假,簡簡單單的思考,簡簡單單的相信,簡簡單單生活,很好...
    冷暖知閱讀 275評論 0 0

友情鏈接更多精彩內(nèi)容