Javascript 如何在HTML输入类型颜色选择器中阻止或忽略特定颜色?
有没有办法阻止用户使用js或css在颜色选择器输入type='color'中选择特定颜色 例如,我不希望用户能够从选择器中选择颜色ff0000 如果可能的话,我也找不到答案Javascript 如何在HTML输入类型颜色选择器中阻止或忽略特定颜色?,javascript,html,css,Javascript,Html,Css,有没有办法阻止用户使用js或css在颜色选择器输入type='color'中选择特定颜色 例如,我不希望用户能够从选择器中选择颜色ff0000 如果可能的话,我也找不到答案 提前感谢您提供的任何信息。会建议“防止用户选择特定颜色”,但您只需在更改事件中包含一个检查: 默认情况下,我认为选择颜色本身是不可能的。但进一步利用这个价值,一切都在你的手中 您可以通过存储每次更改的值来解决此问题,如果检查失败,则恢复到原始存储值这将允许恢复到最后一个“有效”值,而不仅仅是默认值,这是一个很好的UX改进:
提前感谢您提供的任何信息。会建议“防止用户选择特定颜色”,但您只需在更改事件中包含一个检查: 默认情况下,我认为选择颜色本身是不可能的。但进一步利用这个价值,一切都在你的手中 您可以通过存储每次更改的值来解决此问题,如果检查失败,则恢复到原始存储值这将允许恢复到最后一个“有效”值,而不仅仅是默认值,这是一个很好的UX改进:
document.getElementById('myColorInput').addEventListener('change', function(e){
var target = e.target;
var value = target.value;
var prevStoredValue = target.getAttribute('data-storedValue');
if (value != '#ff0000') {
target.setAttribute('data-storedValue', value);
/* use it further on */
} else {
if (prevStoredValue) {
target.value = prevStoredValue;
} else {
target.setAttribute('data-storedValue', '#FFFFFF'); // or any default value
};
/* do not allow it and warn the user or something */
}
});
将建议“防止用户选择特定颜色”,但您只需在更改事件中包含一个检查: 默认情况下,我认为选择颜色本身是不可能的。但进一步利用这个价值,一切都在你的手中 您可以通过存储每次更改的值来解决此问题,如果检查失败,则恢复到原始存储值这将允许恢复到最后一个“有效”值,而不仅仅是默认值,这是一个很好的UX改进:
document.getElementById('myColorInput').addEventListener('change', function(e){
var target = e.target;
var value = target.value;
var prevStoredValue = target.getAttribute('data-storedValue');
if (value != '#ff0000') {
target.setAttribute('data-storedValue', value);
/* use it further on */
} else {
if (prevStoredValue) {
target.value = prevStoredValue;
} else {
target.setAttribute('data-storedValue', '#FFFFFF'); // or any default value
};
/* do not allow it and warn the user or something */
}
});
与大多数html输入事件一样,colorpicker正在触发事件。在这种情况下,我们可以使用的是变化。一旦用户选择颜色并单击“确定”,它就会被触发 在这个侦听器的回调函数中,我们可以确定如果用户选择了特定的颜色,应该发生什么 函数colorSelectede{ 如果e.target.value==ff0000{ 警告:请不要选红色; }否则{ } } document.getElementByIdcolorPicker.addEventListenerchange,已选择颜色;
与大多数html输入事件一样,colorpicker正在触发事件。在这种情况下,我们可以使用的是变化。一旦用户选择颜色并单击“确定”,它就会被触发 在这个侦听器的回调函数中,我们可以确定如果用户选择了特定的颜色,应该发生什么 函数colorSelectede{ 如果e.target.value==ff0000{ 警告:请不要选红色; }否则{ } } document.getElementByIdcolorPicker.addEventListenerchange,已选择颜色;
输入的概念是提供预先制作的小部件,您可以快速有效地将其插入您的网站。这些小部件本身有许多不同的操作方式。但是当涉及到颜色小部件时,可编辑性非常低 如果您希望用户选择颜色,但希望限制颜色,则可能必须制作自己的颜色选择器。然而,您可以使用javascript来解决这个问题,但它的范围很窄 大概是这样的:
if(color.value == '#ff0000') {
alert('not allowed');
color.value = '000000';
}
或
最后,我认为自己制作有限的颜色选择器是最好的选择。或者使用RGB或HSL之类的东西,而不是使用十六进制
干杯输入的概念是提供预先制作好的小部件,您可以快速有效地将其投放到您的网站上。这些小部件本身有许多不同的操作方式。但是当涉及到颜色小部件时,可编辑性非常低 如果您希望用户选择颜色,但希望限制颜色,则可能必须制作自己的颜色选择器。然而,您可以使用javascript来解决这个问题,但它的范围很窄 大概是这样的:
if(color.value == '#ff0000') {
alert('not allowed');
color.value = '000000';
}
或
最后,我认为自己制作有限的颜色选择器是最好的选择。或者使用RGB或HSL之类的东西,而不是使用十六进制
干杯我建议您只使用少数可接受的颜色构建自己的界面。当然,允许用户从上百万种颜色的菜单中完全控制是很好的,但是如果这个选择会带来问题,你应该限制选择,而不是试图破坏界面
正如其他人所说,您可以检查输入更改后选择的颜色,但我发现您不太可能真的只想禁止一种颜色。红色由许多不同的色调组成,这些色调可能不符合您的对比度、品牌、意义等标准。您可能如何测试所有这些颜色?我建议您只使用少数可接受的颜色构建自己的界面。当然,允许用户从上百万种颜色的菜单中完全控制是很好的,但是如果这个选择会带来问题,你应该限制选择,而不是试图破坏界面
正如其他人所说,您可以检查输入更改后选择的颜色,但我发现您不太可能真的只想禁止一种颜色。红色是由许多不同的色调和阴影组成的
可能不符合您的对比度、品牌、意义等标准。您将如何针对所有这些标准进行测试?您将帕累托问题抛到了一个简单直接的组件上。提供您自己的颜色选择器或提示用户选择其他颜色。哦,HSL可能值得一看。不提供任何过滤器,您只能让用户选择颜色,然后检查该值并拒绝该值,或以编程方式更改该值。您无法更改默认颜色选择器的行为,因为它是由浏览器本身提供的。正如GottZ所说,您必须创建/使用一个js颜色选择器。您在一个简单且直接使用的组件上抛出了一个pareto问题。提供您自己的颜色选择器或提示用户选择其他颜色。哦,HSL可能值得一看。不提供任何过滤器,您只能让用户选择颜色,然后检查该值并拒绝该值,或以编程方式更改该值。您无法更改默认颜色选择器的行为,因为它是由浏览器本身提供的。正如GottZ所说,您必须创建/使用js颜色选择器来检查变量是否等于您使用的if语句中的值!==不是。仅当您同时检查类型和值时,才需要使用!==。由于返回的值已经是一个字符串,因此在本例中不需要它。在这种情况下,两种方法都有效。这是一个关于这件事的完整讨论,但在这种情况下,任何一种方法都可以@AnduAndrici我最喜欢你的答案,因为你也给出了一个如何恢复到原始存储值的示例。感谢您提供信息来检查变量是否等于您使用的if语句中的值!==不是。仅当您同时检查类型和值时,才需要使用!==。由于返回的值已经是一个字符串,因此在本例中不需要它。在这种情况下,两种方法都有效。这是一个关于这件事的完整讨论,但在这种情况下,任何一种方法都可以@AnduAndrici我最喜欢你的答案,因为你也给出了一个如何恢复到原始存储值的示例。谢谢你的信息