ie9 支持占位符

22 篇文章 0 订阅

封装placeholder.js,在需要的页面进行引入。

import $ from 'jquery'
function placeholder() {
  // 不支持placeholder
  if(!isSupportPlaceholder()) {
    // 遍历所有input对象, 除了密码框
    $('input').not("input[type='password']").each(
      function() {
        var self = $(this);
        var val = self.attr("placeholder");
        input(self, val);
      }
    );
    /** 对password框的特殊处理
     * 1.创建一个text框
     * 2.获取焦点和失去焦点的时候切换
     */
    $('input[type="password"]').each(
      function() {
        var pwdField    = $(this);
        var pwdVal      = pwdField.attr('placeholder');
        var pwdId       = pwdField.attr('id');
        // 重命名该input的id为原id后跟1
        pwdField.after('<input class="ivu-input" id="' + pwdId +'1" type="text" value='+pwdVal+' autocomplete="off" />');
        var pwdPlaceholder = $('#' + pwdId + '1');
        pwdPlaceholder.show();
        pwdField.hide();

        pwdPlaceholder.focus(function(){
          pwdPlaceholder.hide();
          pwdField.show();
          pwdField.focus();
        });

        pwdField.blur(function(){
          if(pwdField.val() == '') {
            pwdPlaceholder.show();
            pwdField.hide();
          }
        });
      }
    );
  }
}

// 是否支持placeholder属性
function isSupportPlaceholder() {
  var input = document.createElement('input');
  return 'placeholder' in input;
}

// jQuery处理placeholder
function input(obj, val) {
  var $input = obj;
  var val = val;
  $input.attr({value:val});
  $input.focus(function() {
    if ($input.val() == val) {
      $(this).attr({value:""});
    }
  }).blur(function() {
    if ($input.val() == "") {
      $(this).attr({value:val});
    }
  });
}
export default placeholder;

引入:

import placeholder from '../page/utils/placeholder'

1,第一种情况,如果是刚打开页面就有输入框,就在当前页面初始化的时候,像iview的弹出框就是事件触发的,本身用的是css进行显示和隐藏的。所以就是打开的页面的时候,节点就是存在的,直接就触发事件:

  mounted() {
    this.$nextTick(() => {
      placeholder()
    })
  },

2,第二种情况,就是使用 v-if 进行节点的删除和显示的时候,要在事件触发的时候,才调用当前的占位符事件。

 /**进行登录方式切换 */
    tabLoginFn: function() {
      let ths = this;

      if (ths.loginType) {
        ths.loginTypeTxt = "账号密码登录";
        ths.loginType = false;
        ths.$nextTick(() => {
          placeholder();
        });
      } else {
        ths.loginTypeTxt = "手机验证码登录";
        ths.loginType = true;
        ths.$nextTick(() => {
          placeholder();
        });
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值