input文本框获取文本内容宽度
不想用多行文本框textarea标签,input单行文本框宽度不够,内容显示不完!怎么办。我想点击文本框显示完内容!找了资料,发现可以比较准确获取文本框内容的宽度,做了个简单的页面!input输入超出宽度在下面DIV显示完内容,点击DIV内容隐藏。注意!这里用了VUE.js,呃,我是在IDEA项目上测试的。非静态页面<!DOCTYPE html>&...
·
不想用多行文本框textarea标签,input单行文本框宽度不够,内容显示不完!怎么办。我想点击文本框显示完内容!找了资料,发现可以比较准确获取文本框内容的宽度,做了个简单的页面!
input输入超出宽度在下面DIV显示完内容,点击DIV内容隐藏。
注意!这里用了VUE.js,呃,我是在IDEA项目上测试的。非静态页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<!--vue JS-->
<script src="../../static/js/vue.min.js"></script>
<style>
.apply strong {
display: block;
padding: .5rem .5rem;
background: #fff;
font-size: .95rem;
color: #666;
border-bottom: solid 1px #efefef;
line-height: 35px;
font-weight: normal;
}
#word {
width: 100%;
height: auto;
background-color: white;
display: contents;
}
.click_work {
padding-bottom: 8px;
font-weight: lighter;
font-size: 13px;
cursor: pointer; /*鼠标放上变成小手*/
}
</style>
</head>
<body>
<form id="apply">
<div>
<strong>
<label>地址:</label>
<input type="text" ref="address" id="demo-input" autofocus placeholder="请输入地址"
style="font-weight:700; color:#333;width: 70px;">
</strong>
</div>
<div id="word">
</div>
</form>
<script>
$(document).ready(function () {
var apply = new Vue({
el: '#apply',
data: {},
mounted: function () {
var input = $('#demo-input'), val = ' ', span = $('<span/>').css({
position: 'absolute',
top: -9999,
left: -9999,
width: 'auto',
fontSize: input.css('fontSize'),
fontFamily: input.css('fontFamily'),
fontWeight: input.css('fontWeight'),
letterSpacing: input.css('letterSpacing'),
whiteSpace: 'nowrap',
ariaHidden: true
});
//input后面插入span标签
span.insertAfter(input);
//当键盘键被松开时
$('#demo-input').keyup(function () {
//获取input的内容
var keywords = $(this).val();
//获取div标签
var word = $('#word');
if (keywords == '') {
//隐藏DIV标签
word.hide();
return;
}
//复盖内容
span.html(keywords.replace(/&/g, '&').replace(/\s/g, ' ').replace(/</g, '<').replace(/>/g, '>'));
//input标签的宽度
var input_length = $(this).width();
//span标签的宽度
var span_length = span.width();
if (span_length < input_length) {
//隐藏DIV标签
word.hide();
} else {
//清空之前的内容后显示div标签
word.empty().show();
//添加内容
word.append('<strong class="click_work">' + keywords + '</strong>');
}
});
$(document).on('click', '.click_work', function () {
//隐藏DIV标签
$('#word').hide();
});
$(document).on('click', '#demo-input', function () {
//显示DIV标签
$('#word').show();
})
},
methods: {}
});
});
</script>
</body>
</html>
图片效果
更多推荐
已为社区贡献2条内容
所有评论(0)