javascript - 当颜色选择器以编程方式设置值时,如何避免触发 Onchange 事件

标签 javascript jquery html twitter-bootstrap color-picker

我想以编程方式设置颜色选择器值,而不触发 Colorpicker On Change 事件

注意: 我正在更改事件下执行一些特定代码, 但我不需要在代码中设置值后执行这些代码块

我尝试过 e.stoppropagation 和 e.preventdefault 但最终没有成功

function resetColor(){
 //Some code...
 $("#" + affectColorAreaId).colorpicker('setValue', defaultValue);
 //Some code...
}

最佳答案

您可以使用.data方法来检查它是否来自重置事件并相应地设置或删除其值,但我在文档中找不到任何内容。考虑以下因素:

const defaultValue = '#000000';
$('#picker').colorpicker({}).on('changeColor', function(event) {
  if (!$(this).data('isFromReset'))
    console.log('from color change!');
  else
    $('#picker').removeData('isFromReset');
});

function reset() {
  console.log('from reset!');
  $('#picker').data('isFromReset', true).colorpicker('setValue', defaultValue);
}
.as-console-wrapper {
  max-height: 50px !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-colorpicker/2.5.3/js/bootstrap-colorpicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-colorpicker/2.5.3/css/bootstrap-colorpicker.css" rel="stylesheet" />

<input id="picker" />
<button onclick="reset();">reset</button>

关于javascript - 当颜色选择器以编程方式设置值时,如何避免触发 Onchange 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57423688/

相关文章:

javascript - 如何停止 visual studio 在函数定义和立即调用之间插入空格?

javascript - FabricJS - 如何显示单独的旋转 handle ?

javascript - 如何从容器中获取完整字符串?

javascript - 使用 firebase 版本 3.0.2 推送数据。 ..错误是( promise )错误: PERMISSION_DENIED: Permission denied(…)

javascript - 无法在不弄乱整个文档的情况下调整 "boxed"文本的大小

html - 每个浏览器的背景图都不同,哪个是正确的?

javascript - 图像宽度的过渡不适用于窗口滚动

php - 如何设置下拉列表项的样式

jquery - 每天多列全日历

jquery - 可定制的用户界面网站示例