iview Page分页组件实现失去焦点跳转页码(项目笔记)

现在的iview的Page分页组件跳转页码只能输入页面后点击键盘enter键才能实现跳转,但是现在的需求是输入页码后失去焦点也能实现页码跳转。 最简单的实现方式就是使用element的分页组件,但是此项目一开始就封装iview分页组件了,不想再改成element。那么记录下实现的方式吧,防止以后忘记。。。。。。。。。。

 

简单的思路就是给iview的Page组件增加个失去焦点事件(blur),但貌似Page组件不能直接使用blur事件,那么就只能靠js给他添加blur事件了,只要使用addEventListener给它增加个blur事件。

在使用addEventListener的过程中发现这个input并没有id,如何获取到input元素呢,在这里我直接使用setAttribute给input增加唯一id

document.getElementsByClassName('ivu-page-options-elevator')[0].children[0].setAttribute('id', 'pageInput')

接下来就是用addEventListener方法添加blur事件了,代码如下

document.getElementById('pageInput').addEventListener('blur', (res) => {
      this.changePage(Number(res.target.value))
      this.page = Number(res.target.value)
    })

由于vue的生命周期的原因,代码写在了mounted中。到目前为止已经可以实现失去焦点跳转了,但是产生了bug,如下图

产生了bug就需要解决bug,思路是对输入的页码进行判断,大于分页页码,失去焦点后使用最大页码,小于最大页码则正常使用

最终代码如下

  mounted () {
    document.getElementsByClassName('ivu-page-options-elevator')[0].children[0].setAttribute('id', 'pageInput')
    document.getElementById('pageInput').addEventListener('blur', (res) => {
      if (Number(res.target.value) > Math.ceil(this.total / this.size)) {
        this.page = Math.ceil(this.total / this.size)
        this.changePage(Math.ceil(this.total / this.size))
        res.target.value = Math.ceil(this.total / this.size)
      } else {
        this.changePage(Number(res.target.value))
        this.page = Number(res.target.value)
      }
    })
  },

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值