javascript - 更改部分文本框输入的颜色

标签 javascript jquery angularjs

我想知道是否可以仅更改文本输入框颜色的一部分。我正在创建一个评论小部件,希望 @ 和 : 之间的所有内容都更改为不同的颜色:

<input type="text" placeholder="Want To Say Something?" 
value="@user556: This is a test comment" ng-model="Comment" ng-click="getCurrentPosition()" 
class="form-control ng-valid valid ng-dirty">

这可以用 jQuery 或 javascript 实现吗?或者我是否必须将文本输入转换为 div?

最佳答案

可能,在 contenteditable 元素内,
并用一些 JS 和一些 RegExp 来替换所需的匹配:

function colorify() {
  this.innerHTML = this.textContent.replace(/@([^:]+):/g, "@<span class='user'>$1</span>:");
}

function uncolorify() {
  this.innerHTML = this.textContent;
}

[].forEach.call(document.querySelectorAll(".comment"), function(el){
  el.addEventListener("blur",    colorify);
  el.addEventListener("focus", uncolorify);
});
[contenteditable] {
  background:#fafafa;
  padding:8px;
  border-radius:3px;
  border:1px solid #ddd;
}
[contentEditable]:empty:not(:focus):before {
  /*http://stackoverflow.com/a/18368720/383904*/
  content: attr(data-placeholder);
  color: #777;
}
.user{
  color: #f0f;
}
(Copy the following text into the contenteditable)<br>
@user547794: Use contenteditable. @johnDoe: nice suggestion btw.
<div class="comment" contenteditable data-placeholder="Want To Say Something?"></div>
Than click outside of the contenteditable.

关于javascript - 更改部分文本框输入的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22790723/

相关文章:

javascript - 如何向同一个事件添加多个事件处理程序?

javascript - .load() 是否检索 Javascript?

javascript - href javascript 无法在 Tampermonkey 脚本中运行

javascript - 如何在将内容保留在 AngularJS 中的同时操纵 DOM 的类型?

javascript - JavaScript中如何获取URL参数?

javascript - 在 Asp .Net 中多次显示弹出消息

javascript - 使用 React 读取嵌套 JSON 数据

jquery - window.location.hash - 停止在 Chrome 中重新加载

javascript - 从外部 Controller 调用 Angular JS

css - 如何显示标签但不移动div中的其他元素?