提问人:gib65 提问时间:11/15/2023 更新时间:11/15/2023 访问量:14
如何防止我的jquery颜色选择器在某些情况下设置所选颜色?
How do I prevent my jquery colorpicker from setting the selected color under certain conditions?
问:
我们正在开发一个使用 JQuery 的 colorPicker 的 AngularJS 应用程序。下面是颜色选取器的代码:
$('#c' + driver.nodeId + '_' + driver.measurementGroupId).ColorPicker({
pickerDefault: driver.color,
colors: AppSettings.OptionalPalette,
transparency: true,
onColorChange: function(dummy, color) {
driverColorChanged(driver, color);
}
});
我们希望阻止用户选择已为其他驱动程序选择的颜色。因此,我实现了以下代码,当所选颜色与现有颜色匹配时,该代码在 driverColorChanged() 中运行:
var colorMatch = false;
_.forEach($scope.drivers, function(d) {
if (!(d.locationId === driver.locationId && d.measurementGroupId === driver.measurementGroupId)) {
colorMatch = d.color === color;
if (colorMatch) return false;
}
});
if (colorMatch) {
var colorPickerHandle = document.querySelector('#c' + driver.nodeId + '_' + driver.measurementGroupId);
var colorPicker = colorPickerHandle.nextElementSibling;
colorPicker.style.backgroundColor = driver.color;
$modal.open({
templateUrl: 'template/modal/messageModal.html',
size: "sm",
controller: function($scope, $modalInstance){
$scope.Header = $filter('translate')('CEBM_DRIVER_COLOR_TAKEN_TITLE');
$scope.Message = $filter('translate')('CEBM_DRIVER_COLOR_TAKEN_MSG');
$scope.ok = function(){
$modalInstance.close();
};
}
});
}
这适用于使用模式警告用户已选择颜色,但使用 将颜色选取器设置回原始颜色时不起作用。准确地说,如果我在该行上放置一个断点并运行它,我会看到颜色改回原始颜色,但是当我让它运行时,我看到颜色被设置回用户选择的颜色(就像颜色选择器试图覆盖我的 backgroudColor 的编程设置一样)。colorPicker.style.backgroundColor = driver.color
所以我的问题是:我怎样才能告诉颜色选择器不要将颜色设置为用户选择的颜色?有没有另一个钩子我可以使用,喜欢或类似的东西?您将如何处理防止在特定条件下设置颜色?beforeColorChange
答: 暂无答案
上一个:预锁钩玳瑁SVN
评论