所以我有 3 个文本输入区域。这样做的原因是因为我需要一条黑线分隔每一行文本。
我需要想办法让这些文本框感觉像是一个巨大的文本区域。
即 - 当您键入时,当没有更多空间时它会移动到下一行,当您删除文本时,它会在需要时将其推回上一行。
有谁知道我可以实现这一目标的任何解决方法或方法?
我基本上需要做一个人们可以输入的框,看起来和图片一模一样,但人们只能在蓝色区域输入和编辑。文本“人们将键入的内容的标签”。不能更改、编辑、删除等。
所以我有 3 个文本输入区域。这样做的原因是因为我需要一条黑线分隔每一行文本。
我需要想办法让这些文本框感觉像是一个巨大的文本区域。
即 - 当您键入时,当没有更多空间时它会移动到下一行,当您删除文本时,它会在需要时将其推回上一行。
有谁知道我可以实现这一目标的任何解决方法或方法?
我基本上需要做一个人们可以输入的框,看起来和图片一模一样,但人们只能在蓝色区域输入和编辑。文本“人们将键入的内容的标签”。不能更改、编辑、删除等。
您可以像这样使用纯javascript:
<script type="text/javascript">
function ValidatePassKey(tb) {
if (tb.TextLength >= 4)
document.getElementById(tb.id + 1).focus();
}
if (tb.TextLength == 0 & tb.id !== 1){
document.getElementById(tb.id - 1).focus();
}
}
</script>
<input id="1" type="text" onchange="ValidatePassKey(this)" maxlength="4">
<input id="2" type="text" onchange="ValidatePassKey(this)" maxlength="4">
<input id="3" type="text" onchange="ValidatePassKey(this)" maxlength="4">
<input id="4" type="text" maxlength="4">
一旦您当前所在的文本框已满,这只会将您的光标移动到下一个文本框。
如果您只为线条使用 3 个 texbox,而不是那样,您为什么不使用带有背景图像的 textarea 呢?
看看这个:jsfiddle.net/felipemiosso/Rh82q/
更新:jsfiddle.net/felipemiosso/Rh82q/4/
我认为使用许多文本区域或输入字段是错误的方法。
您可以在下面找到满足缩进的尝试,如果不存在则在开头添加空格。它还添加了一个带有许多 <li> 元素的 <ul> 元素,以允许您在行下方有线条。如果 textarea 中的文本过多,它也会滚动背景。
在 Chrome30、FF25 和 IE10 中进行了测试,旨在作为概念验证。如果你要实现这个,你可能应该根据需要动态添加尽可能多的 <li> 元素。并且事件应该被正确绑定。
<!doctype html>
<html>
<head>
<style>
div.mytext {
position:relative;
overflow:hidden;
width:400px;
height:200px;
}
div.mytext > ul {
position:absolute;
top:5px;
left:2px;
font-weight:bold;
color:#f00;
list-style:none;
width:100%;
padding:0;
margin:0;
z-index:0;
}
div.mytext >ul> li {
border-bottom:1px solid #000;
width:100%;
height:19px;
}
div.mytext > ul,
div.mytext > textarea {
font-size:12px;
line-height:20px;
font-family:courier;
height:100%;
width:100%;
overflow:hidden;
max-width:100%;
max-height:100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
div.mytext > textarea {
position:relative;
background:transparent;
}
</style>
<script>
function update(area) {
if (!area.value.match(/^[ ]{8}/)) {
area.value = ' ' + area.value.replace(/^\s+/,"");
}
if (area.selectionStart < 8) {
area.selectionStart = 8;
}
}
function scroll(area) {
area.parentElement.firstElementChild.scrollTop = area.scrollTop;
}
</script>
</head>
<body>
<div class='mytext'>
<ul>
<li>Label:</li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
<li> </li>
</ul>
<textarea onkeydown='update(this)' onscroll='scroll(this)'></textarea>
</div>
</body>
</html>
解释:
免责声明:这只是一个概念证明,如果要在生产中使用,还需要做更多的工作。