当文本区域具有焦点时展开文本区域(并将其置于前面)
我想扩展一个文本区域(增加高度),只要它具有焦点。展开时,文本区域不应向下移动内容,而应显示在其他内容之上。
这是我到目前为止使用的代码(参见此处的示例):
$(document).ready(function () {
$('#txt1').focus(function () {
$(this).height(90).css('zIndex', 30000);
$('#txt2').val('focus');
});
$('#txt1').blur(function () {
$(this).css('height', 'auto');
});
});
文本区域的扩展有效很好,但我无法让它显示在页面上其他元素的上方(它显示在后面的元素后面)。
是否有任何技巧可以在所有其他元素上方/前面显示扩展的文本区域?
更新:这是用于重现问题的(最小)HTML 代码:
<div style="height:20px;">first:<br/>
<textarea id="txt1" rows="1" cols="20"
style="width: 400px; height: 12px; font-size: 10px;">
</textarea>
</div>
<br/>
second:
<br/>
<input type="text" id="txt2"/>
I want to expand a textarea (increase the height) as long as it has the focus. When expanded, the textarea should not move the content down, instead it should be displayed above the other content.
This is the code I'm using so far (see here for an example):
$(document).ready(function () {
$('#txt1').focus(function () {
$(this).height(90).css('zIndex', 30000);
$('#txt2').val('focus');
});
$('#txt1').blur(function () {
$(this).css('height', 'auto');
});
});
The expanding of the textarea works fine, but I can't get it to display above the other elements on the page (it is displayed behind the elements which follow).
Are there any tricks to show the expanded textarea above/in front of all other elements?
Update: this is the (minmal) HTML code used to reproduce the problem:
<div style="height:20px;">first:<br/>
<textarea id="txt1" rows="1" cols="20"
style="width: 400px; height: 12px; font-size: 10px;">
</textarea>
</div>
<br/>
second:
<br/>
<input type="text" id="txt2"/>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在
textarea
上设置position
有效。您还可以去掉z-index
。工作演示
Setting
position
on thetextarea
works. You can also get rid of thez-index
.Working demo
如果元素没有除静态之外的
位置
,添加z-index
不会执行任何操作。就个人而言,我会添加一个包含所有 css 更改的类并包含一个覆盖层,如下所示(演示):CSS
脚本
Adding a
z-index
does nothing without the element having aposition
other than static. Personally, I would add a class with all of the css changes and include an overlay, like this (demo):CSS
Script
尝试设置样式“position:absolute;”在第一个文本区域(txt1)上,这应该可以解决问题。
Try setting the style 'position:absolute;' on the first textarea (txt1) and that should do the trick.
试试这个插件。应该快速而简单:http://unwrongest.com/projects/elastic/
Try this plug-in. Should be quick and simple: http://unwrongest.com/projects/elastic/
使用
input
和textarea
进行工作,主要是css
和一点jquery
用于定位http://jsfiddle.net/Ap5Xc/
working fiddle with
input
andtextarea
, mostlycss
with a littlejquery
for positioninghttp://jsfiddle.net/Ap5Xc/