HTML5输入类型的范围和颜色不能为空。如果他们镜像的数据库列为空怎么办?

问题描述 投票:0回答:2

相对较新的 HTML 表单控件包括“type=range”和“type=color”控件。该规范规定,当提交包含此类控件的表单时,始终会为这些控件提交一个值。它们永远不会是空的。

这与 type=text 控件和其他类似控件不同,它们的值确实可以是空字符串。

范围和颜色控件似乎不可能用于反映数据库中可为空列的状态。

有什么解决办法吗?

编辑:行为由此处的链接指定:HTML5 规范

forms html input colors range
2个回答
0
投票

对于范围,您可以将范围的值设置为超出范围的数字(当然,如果您希望用户不要弄乱它):

var range = document.getElementById('rangeInput');
 //let's say your range is 0-10

 rangeInput.style.display = 'none';

 range.min = -1;

 range.value = -1;
 //-1 would be your "null" value

 //now, if you wanted the user to be able to edit the null range...

 range.style.display = '';

 range.addEventListener('change',function(){
     if(this.value < 0) this.value = 0;
     //this should keep people from setting it to "null"
 });

我仍然不确定如何对颜色输入执行此操作,因为它没有“越界”。


0
投票

从实践和语义上来说,

NULL
通常意味着“尚未设置任何值,因此使用默认值”。由于存在值(即使不在相关记录中),因此可以将该值赋予输入的初始状态。

未更改的范围或颜色输入可以使用自定义样式来反映其未设置状态(例如降低不透明度)。要重置范围,默认范围位置 0%、100% 或 50% 可能可以直观地解决大多数情况(无需添加重置按钮)。对于颜色输入,任何具有 0% Alpha 的颜色(例如,

transparent
#00000000
hsla(20,50%,80%,0%)
)都可以重置(无需添加重置按钮)。

与用于“关闭”某些内容的复选框一样,后端验证执行最后一步,将默认值转换为

SET input_field=NULL

© www.soinside.com 2019 - 2024. All rights reserved.