国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

編寫(xiě)一個(gè)指令(v-focus2end)使輸入框文本在聚焦時(shí)焦點(diǎn)在文本最后一個(gè)位置

這篇具有很好參考價(jià)值的文章主要介紹了編寫(xiě)一個(gè)指令(v-focus2end)使輸入框文本在聚焦時(shí)焦點(diǎn)在文本最后一個(gè)位置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

項(xiàng)目反饋輸入框內(nèi)容比較多時(shí)候,讓鼠標(biāo)光標(biāo)在最后一個(gè)位置,心想什么奇葩需求,后面試了一下,是有點(diǎn)影響體驗(yàn),于是就有了下面的效果,我目前的項(xiàng)目都是若依的架子,用的是vue2版本。vue3的朋友想要使用,自行調(diào)節(jié)
效果圖如下:

編寫(xiě)一個(gè)指令(v-focus2end)使輸入框文本在聚焦時(shí)焦點(diǎn)在文本最后一個(gè)位置,vue.js,前端,javascript文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-643652.html

使用方法:
  • 前提是指令被注冊(cè),代碼不顯示注冊(cè)內(nèi)容
<el-input v-focus2end v-model="dialog.form.actionSign" placeholder="請(qǐng)輸入" clearable />
v-focus2end 指令
  • 還能繼續(xù)優(yōu)化,我就不想在操作了
/**
 * Copyright ?
 * # v-focus2end
 * @author: zw
 * @date: 2023-07-17
 */

export default {
  inserted(el) {
    const input = el instanceof HTMLInputElement ? el : el.querySelector('input')

    input.addEventListener('focus', focusEventListener.bind(input), false)
    input.addEventListener('blur', blurEventListener.bind(input), false)

    el.__focusEventListener = focusEventListener
    el.__blurEventListener = blurEventListener
  },
  unbind(el) {
    const input = el instanceof HTMLInputElement ? el : el.querySelector('input')

    input.removeEventListener('focus', el.__focusEventListener, false)
    input.removeEventListener('blur', el.__blurEventListener, false)
  },
}

function focusEventListener(e) {
  e.preventDefault()
  setTimeout(() => {
    const inputLength = this.value.length
    this.setSelectionRange(inputLength, inputLength)
    smoothMove.call(this)
  }, 300)
}

function blurEventListener() {
  this.removeEventListener('focus', focusEventListener, false)
}

function smoothMove() {
  const scrollMax = this.scrollWidth - this.clientWidth
  const duration = 300
  const startTime = performance.now()

  function smoothScroll(timestamp) {
    const elapsedTime = timestamp - startTime
    const progress = Math.min(elapsedTime / duration, 1)

    const scrollPosition = progress * scrollMax
    this.scrollLeft = scrollPosition

    if (elapsedTime < duration) {
      requestAnimationFrame(smoothScroll.bind(this))
    }
  }

  requestAnimationFrame(smoothScroll.bind(this))
}

到了這里,關(guān)于編寫(xiě)一個(gè)指令(v-focus2end)使輸入框文本在聚焦時(shí)焦點(diǎn)在文本最后一個(gè)位置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包