Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在HTML输入类型颜色选择器中阻止或忽略特定颜色?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何在HTML输入类型颜色选择器中阻止或忽略特定颜色?

Javascript 如何在HTML输入类型颜色选择器中阻止或忽略特定颜色?,javascript,html,css,Javascript,Html,Css,有没有办法阻止用户使用js或css在颜色选择器输入type='color'中选择特定颜色 例如,我不希望用户能够从选择器中选择颜色ff0000 如果可能的话,我也找不到答案 提前感谢您提供的任何信息。会建议“防止用户选择特定颜色”,但您只需在更改事件中包含一个检查: 默认情况下,我认为选择颜色本身是不可能的。但进一步利用这个价值,一切都在你的手中 您可以通过存储每次更改的值来解决此问题,如果检查失败,则恢复到原始存储值这将允许恢复到最后一个“有效”值,而不仅仅是默认值,这是一个很好的UX改进:

有没有办法阻止用户使用js或css在颜色选择器输入type='color'中选择特定颜色

例如,我不希望用户能够从选择器中选择颜色ff0000

如果可能的话,我也找不到答案


提前感谢您提供的任何信息。

会建议“防止用户选择特定颜色”,但您只需在更改事件中包含一个检查:

默认情况下,我认为选择颜色本身是不可能的。但进一步利用这个价值,一切都在你的手中

您可以通过存储每次更改的值来解决此问题,如果检查失败,则恢复到原始存储值这将允许恢复到最后一个“有效”值,而不仅仅是默认值,这是一个很好的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我最喜欢你的答案,因为你也给出了一个如何恢复到原始存储值的示例。谢谢你的信息