在输入框中的光标后添加不可编辑的文本

Posted

技术标签:

【中文标题】在输入框中的光标后添加不可编辑的文本【英文标题】:Add non-editable text after cursor in input box 【发布时间】:2014-11-02 03:46:14 【问题描述】:

我正在尝试在文本字段/输入框中的光标后添加不可编辑的文本,以实现以下目的:

1) 光标前的文字是可编辑的 2) 光标后的文本不可编辑,随着左侧文本的添加/删除而向右/向左移动

输入字段:[editabletextherecursorherenon-editabletexthere]

到目前为止,这是我的输入框的代码:

<input id="edit_input" type="text" autocapitalize="off" autocorrect="off" spellcheck="false" autofocus onfocus="this.value = this.value;" value="editabletext" style="width:100%;"></input>

我觉得输入中的值应该放在一个跨度内,而第二个跨度只需使用 contenteditable=false; 进行风格化。我还想将不可编辑的文本风格化为不同的颜色。任何帮助将非常感激。谢谢。

【问题讨论】:

您不能将输入字段一分为二。不确定您要对此做什么。 【参考方案1】:

这可能不是最好的解决方案,它有点像 hack,但效果很好。 我们的想法是创建一个看起来像输入框的 div,其中包含 2 个跨度,并让其中一个可编辑。

div 
    border: 1px solid #999;
    padding: 5px;
    width: 100%;


span 
    width: auto;
    outline: 0;


span.trailing 
    color: grey;
<div>
    <span contenteditable="true" id="edit_input_fake">Input</span>
    <span class="trailing">Trailing text</span>
  </div>

您可以创建一个&lt;input type="hidden"&gt;,如果需要,您可以在事件 keydown/change 上复制第一个跨度(可能也是第二个跨度)的内容。

JSFiddle 可在此处获取:http://jsfiddle.net/c6f7ommh/1

【讨论】:

这看起来不错。一个问题:有没有办法让光标在输入的文本之后?即在“输入”之后? 当插入符号位于用户输入文本的末尾时 - 它停止闪烁 - 你如何保持闪烁的插入符号? 这表现得像一个文本区域而不像一个输入,如果我按回车,它就会变高【参考方案2】:

JSFiddle - DEMO

你可以这样做:

HTML:

<input id="edit_input" type="text" autocapitalize="off" autocorrect="off" spellcheck="false" autofocus onfocus="this.value = this.value;" value="editabletext" style="width:100%;"></input>
<p>SOME TEXT</p>

CSS:

input 
    width: 100%;
    float:left;
    font-size: 16px;
    padding: 0px 120px 0px 0px;
    box-sizing:border-box;

p 
    margin:0px 0px 0px -100px;
    float:left;
    padding-top: 5px;

[已编辑]

如果你想cursor: default;user-select: none; - DEMO

【讨论】:

【参考方案3】:

如果您试图告知用户某些文本将被附加到他们输入的任何内容中,那么在文本框后面添加一个带有不可编辑部分的标签就足够了。然后,您的服务器代码可以并行地将不可编辑部分附加到提交的文本中,因为我假设它是一个常量。

【讨论】:

很公平。我仍然有点不确定 cmets 和答案之间的界限。似乎这可以解决 OP 的问题。

以上是关于在输入框中的光标后添加不可编辑的文本的主要内容,如果未能解决你的问题,请参考以下文章

qt中如何判断光标在哪个文本框中啊

如何在文本框中输入后编辑十进制数

获取textarea文本框所选字符光标位置索引,以及选中的文本值;textarea高度自适应,随着内容增加高度增加;获取输入框中的光标位置

将光标放在 Visual Studio 的编辑控制框中

js手动控制输入框的光标位置

缩小占位符文本后如何使占位符和文本框光标居中?