javascript - jscolor picker,如何使用按钮的onchange事件?

标签 javascript html onchange jscolor

我正在使用jscolor来自东方欲望的 v2.0.4。一切正常,但如果我使用按钮,onchange 事件将不起作用。

网页上的onchange事件示例中使用了一个输入字段。但我使用按钮元素,这里只有 onFineChange 事件可能。为什么?

这是我的代码:

<button style="border:2px solid black; width:80px; height:30px" class="jscolor {valueElement:'chosen-value', closable:true,closeText:'Close me!', onFineChange:'updateColor(this)'}">Pick color</button>
R, G, B = <span id="rgb"></span>

<script>
function updateColor(picker) {
    document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' + Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);
}
</script>

如果我将 onFineChange 更改为 onchange 那么它不起作用。我能做什么?

最佳答案

您必须注意示例标记。 onchange 是输入元素的一部分,而不是 jscolor 实现的一部分。

<input class="jscolor" onchange="update(this.jscolor)" value="cc66ff">

<input class="jscolor {onFineChange:'update(this)'}" value="cc66ff">

如果您看到标记,那么您就会明白 onchange 不是 jscolor 的实现。

如果你检查 jscolor 的源代码,你也会发现这一点。 onChange 仅在 inpyt 类型元素上触发,而不是在按钮上触发

dispatchChange : function (thisObj) {
        if (thisObj.valueElement) {
            if (jsc.isElementType(thisObj.valueElement, 'input')) {
                jsc.fireEvent(thisObj.valueElement, 'change');
            }
        }
    },

引用:https://github.com/EastDesire/jscolor/blob/master/jscolor.js#L671

因此,如果您想要 onchange 事件,那么您必须将按钮更改为输入类型

或者你可以创建 input type="button"然后监听 onchange 事件,因为插件只关心输入而不关心类型

<input class="jscolor" id="btnPicker" type="button">
<script>

document.getElementById('btnPicker').addEventListener('change', function(e){
    updateColor(this.jscolor)
})
function updateColor(picker) {
    document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' + Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);
}
</script>

关于javascript - jscolor picker,如何使用按钮的onchange事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546835/

相关文章:

javascript - 覆盖 Kendo UI 中的 javascript 函数

javascript - 如何通过真实服务器发送电子邮件(SendGrid)

javascript - 使用 mechanize 勾选复选框

jquery - jquery 中文本更改时更改/交换文本框中的值

php - 关于带有 onchange 操作的下拉列表的快速 javascript 问题

javascript - 如何在 JavaScript 函数中使用 Strut 标签?

html - CSS:使用 element:hover 伪类选择不相关的元素

javascript - 位于弹出图像右上角的关闭按钮

javascript - 获取所选下拉列表项的值

javascript - 如何在 localhost html 文件中使用 YouTube IFRAME-Player?