【问题标题】:Get Color Picker value in tags在标签中获取颜色选择器值
【发布时间】:2020-12-23 22:04:36
【问题描述】:

我正在创建一个文本编辑器,到目前为止一切都很好,除了有点乱我不知道如何解决。

我需要将用户选择的颜色值获取到插入到 textarea 中的标签中。

我真的不知道如何使用 JSFiddle,但我想我可以分享一下:https://jsfiddle.net/ElenaMcDowell/mh9rfwct/

<script>//Color picker

//color picker

var theInput = document.getElementById("colorChoice");
var theColor = theInput.value;
theInput.addEventListener("input", function() {

document.getElementById("hex").innerHTML = theInput.value;
}, false);

//Tags

function btnEditor(h, a, i) { // helloacm.com
    var g = document.getElementById(h);
    g.focus();
    if (g.setSelectionRange) {
        var c = g.scrollTop;
        var e = g.selectionStart;
        var f = g.selectionEnd;
        g.value = g.value.substring(0, g.selectionStart) + a + g.value.substring(g.selectionStart, g.selectionEnd) + i + g.value.substring(g.selectionEnd, g.value.length);
        g.selectionStart = e;
        g.selectionEnd = f + a.length + i.length;
        g.scrollTop = c;
    } else {
        if (document.selection && document.selection.createRange) {
            g.focus();
            var b = document.selection.createRange();
            if (b.text != "") {
                b.text = a + b.text + i;
            } else {
                b.text = a + "REPLACE" + i;
            }
            g.focus();
        }
    }// helloacm.com
}

</script>

还有 HTML

<div class="fonts-box fonts-color" style="text-align: center;">
            <form>
                <input type="color" value="" id="colorChoice">
            </form> 
            <p id="hex" style="padding-bottom: 3px;"></p>
            <button id="colorSelect" onclick="btnEditor('ECEditor', '[color=#VALUEHERE]', '[/color]');">Select</button>
</div>
<textarea id="ECEditor" class="editor-textarea" name="editor-text"></textarea>

【问题讨论】:

  • 您正在寻找使文本字段,文本颜色由他在单击时输入的所选颜色设置是吗?那么当用户在文本字段中键入时,他们选择的颜色将用于文本?
  • 是的,我试图让用户选择文本的颜色,但只选择他/她选择的部分文本,而不是整个文档。

标签: javascript html jquery tags color-picker


【解决方案1】:

function btnEditor() { 

var but = document.getElementById('wrapper')
var color = document.getElementById('colorChoice').value
console.log(color)

but.innerHTML = '<button id=\"colorSelect\" onclick=\"btnEditor(\'ECEditor\', \'[color=' + color + ']\',\'[/color]\');">Select</button>'
   
}

/*
this answer
<button id="colorSelect" onclick="btnEditor('ECEditor', '[color=#000000]','[/color]');">Select</button>

your request
<button id="colorSelect" onclick="btnEditor('ECEditor','[color=#VALUEHERE]','[/color]');">Select</button>
*/
<div class="fonts-box fonts-color" style="text-align: center;">
            <form>
                <input type="color" value="" id="colorChoice">
            </form> 
            <p id="hex" style="padding-bottom: 3px;"></p>
            <span id = 'wrapper'>
            <button id="colorSelect" onclick="btnEditor();">Select</button></span>
</div>

【讨论】:

  • 嗨!抱歉,这样颜色就不会出现在我需要放置的标签 [color=#colorcodehere]text[/color] 中。 :(
  • 感谢您的帮助,但这不是我想要做的。我需要将颜色代码放置在 [color=] 标记内,这是文本区域中用户选择部分文本的地方。 :(
  • 你只需要修改innerHTML。我已经再次更新它来告诉你如何。
  • 我不知道我做错了什么,但它不起作用。 :(
  • 现在试试这个,我错过了一个'
【解决方案2】:
const getCurrentColorPicker = () => {
  return document.getElementById("colorChoice").value;
};

function btnEditor(h, a, i) {
  console.log(getCurrentColorPicker());
  // helloacm.com

  var editor = document.getElementById(h);

  editor.value = a + getCurrentColorPicker() + i;

  // other code...
}

【讨论】:

  • 您好,感谢您的帮助。该代码不会将颜色代码放在标签内,而是放在标签外,并替换 textarea 内的文本,而不是像现在一样包装它。 :(
  • 我改变了答案。问题解决了吗?
  • 我不确定我做错了什么,但仍然无法正常工作。 :(这是怎么回事:jsfiddle.net/ElenaMcDowell/tp6a4xqm/7
  • 不幸的是,我不知道你到底想要什么。但我仍然对代码进行了更改。按照这个链接。 jsfiddle.net/7vmjngef/2
猜你喜欢
  • 1970-01-01
  • 2013-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
相关资源
最近更新 更多