我有一个简单的textarea,我需要做透明的信件,同时允许文本插入符可见。 当我申请以下规则然后我得到无形的插入符号:
textarea {
background: transparent;
opacity: 0;
}
当我键入隐形文字,我需要看到文本移动插入点。
编辑:我需要编辑在编辑表TD手机。 当我点击一个单元格我给一个文本并开始输入。 在每一个字符字母,我插入细胞的上下文。 在那之后,我躲在一个文本。
我有一个简单的textarea,我需要做透明的信件,同时允许文本插入符可见。 当我申请以下规则然后我得到无形的插入符号:
textarea {
background: transparent;
opacity: 0;
}
当我键入隐形文字,我需要看到文本移动插入点。
编辑:我需要编辑在编辑表TD手机。 当我点击一个单元格我给一个文本并开始输入。 在每一个字符字母,我插入细胞的上下文。 在那之后,我躲在一个文本。
这的jsfiddle DEMO使用已经略作修改,以建立一个非母语的在线教程方法browser text-caret
透明文本一起。
此外,该的jsfiddle新方法 ,我创建处理这一目标不同,但不是IE8友好。
状态更新:我已经改善了与这个名为新版本以上的jsfiddle DEMO:
的jsfiddle新方法这是较新的!
上述的jsfiddle版本现在允许单击文本区域的内部和光标将尊重点击的位置。 这种额外的功能是由一个很大的问题成为可能,并回答在这里 。
时间把我的$0.02英寸
这是一个问题的答案,我的理解是,这样的作品,它的快速和肮脏的,所以放心大胆的建议。 此代码是未经测试,但我在这里做创建工作小提琴: http://jsfiddle.net/66RXc/
<html>
<head>
<title>Testing</title>
<script type="text/javascript">
<!--
function call(val) {
document.getElementById('result').value += val.charAt(val.length - 1);
document.getElementById('result').value =
document.getElementById('result').value.substr(0, val.length);
document.getElementById('test').value =
document.getElementById('test').value.replace(/[^\^]/g, ' ');
}
-->
</script>
</head>
<body>
<textarea name="textarea" cols="20" rows="5" id="test"
onKeyUp="call(this.value);"></textarea>
<textarea style="display:block" cols="20" rows="5" id="result" disabled>
</textarea>
</body>
</html>
我走近它是每一个字符在文本域“测试”输入时间的方式,将其复制到一个隐藏的文本框,并更换所有的人物在“测试”除了^用空格。 字符是隐藏的,而克拉仍然存在。 全文依然在其他框。 您可以使用显示:隐藏,而不是显示:块将其隐藏。
这不正是在世界上最好的执行,只是我做了快。 你必须键入有点慢(15-20〜WPM)为它工作。
这是为了使文本本身,一个透明的解决方案CSS3:
设置颜色属性是color: rgba(0,0,0,0);
文本
唯一的问题是,插入符号变为不可见的。 我做了快速搜索,并发现了尖号和它的造型完全支配浏览器。 因此,我可以为你想到的唯一选择是使用JavaScript来模拟插入符号添加到您所输入的内容结束。
我有一个如何做到这一点的想法,但它是凌乱的,我会不完全称之为理想 - 我,不过,要它写在情况下,它有助于进一步别人的想法:
display: none;
(使之具有实际宽度) white-space: nowrap;
保持它都在同一行) <span id="caret">|</span>
右之前textarea的(I将称此为插入符为规范的其余部分) position: relative;
(0 + offsetToACTUALCaretPosition)
class="break"
)来标记以前行的最后一个跨度(字) color: rgba(0,0,0,0);
注意事项:
正如我之前说的,我知道,这个解决方案很粗糙,但它可以帮助别人想出一个更好的。
祝好运!
根据您的编辑,如果你只是需要隐藏的textarea你为什么不使用jQuery $('#your_id').hide();