div模拟input的坑

1.div模拟input、textarea,特点是div的高度可以根据输入内容自动伸缩,而input和textarea输入内容较多时,高度固定,内容会显示不全。

2.div实现可输入加属性

<div contenteditable="true"></div>

3.坑1(IOS端无法输入)

在取消全局默认样式的时候,由于代码加了-webkit-user-select: none(设置或检索是否允许用户选中文本),只要在当前div上设置-webkit-user-select: text就可以输入了。

4.坑2(IOS端无法获取焦点或者只有双击后才可以获取焦点)

在移动端,为了解决300s延迟的问题,我的代码引入了fastclick库,导致点击时会执行preventDefault防止向上冒泡,具体原因看https://blog.csdn.net/soft_z1302/article/details/83104461,所以只要在div上加class="needsclick"就可以了。

5.坑3(提示文字)

div不像input那样,有placeholder属性,要实现这样的效果,得这么写:

<div class="editdiv needsclick" contenteditable="true" placeholder="请输入未进店备注"></div>

<style>
    .editdiv {
     -webkit-user-select:text;
    }
    .editdiv:empty::before {
    content: attr(placeholder);
    color: #999;
    }
    .editdiv:focus::before {
    content: none;
    }
</style>

 

猜你喜欢

转载自www.cnblogs.com/wj19940520/p/10232396.html