我们已经介绍了一个事实,默认情况下,增量为1
,您可以使用步
属性以允许十进制输入。让我们仔细看看。
在下面的示例中,是一个用于输入用户身高的表单。它默认接受以米为单位的高度,但您可以单击相关按钮将表单更改为接受英尺和英寸。高度(以米为单位)的输入接受两位小数。
HTML如下所示:
<形式>
<分区 班="仪表输入组">
<标签 对于="米">输入您的身高-米:</标签>
<输入
身份证件="米"
类型="数"
名称="米"
步="0.01"
最小值="0"
占位符="例如1.78"
必修的 />
<跨度 班="有效性"></跨度>
</分区>
<分区 班="英尺输入组" 风格="显示:没有人;">
<跨度>输入您的身高-</跨度>
<标签 对于="脚">脚:</标签>
<输入 身份证件="脚" 类型="数" 名称="脚" 最小值="0" 步="1" />
<跨度 班="有效性"></跨度>
<标签 对于="英寸">英寸:</标签>
<输入 身份证件="英寸" 类型="数" 名称="英寸" 最小值="0" 最大值="11" 步="1" />
<跨度 班="有效性"></跨度>
</分区>
<分区>
<输入
类型="按钮"
班="米"
价值="输入高度(英尺和英寸)" />
</分区>
<分区>
<输入 类型="提交" 价值="提交表单" />
</分区>
</形式>
您将看到,我们正在使用本文前面介绍过的许多属性步
值为0.01
,因此值如下1.78不被视为无效。我们还为该输入提供了占位符。
我们最初使用隐藏英尺和英寸输入style=“display:none;”
,因此仪表是默认的条目类型。
现在,讨论CSS。这看起来与我们之前看到的验证样式非常相似;这里没什么特别的。
分区 {
边缘-底部:10像素;
位置:相对的;
}
输入[类型=“数字”] {
宽度:100像素;
}
输入+span {
右边距:30像素;
}
输入:无效的+span::之后 {
位置:绝对的;
内容: "✖";
向左填充:5像素;
}
输入:有效+span::之后 {
位置:绝对的;
内容: "✓";
向左填充:5像素;
}
最后,JavaScript:
常量仪表输入组=文件.查询选择器(“.metersInputGroup”);
常量英尺输入组=文件.查询选择器(“.feetInputGroup”);
常量仪表输入=文件.查询选择器(“#米”);
常量feet输入=文件.查询选择器(“#英尺”);
常量英寸输入=文件.查询选择器(“#英寸”);
常量开关Btn=文件.查询选择器('输入[type=“button”]');开关Btn.添加事件侦听器(“单击”, () => {
如果 (开关Btn.获取属性(“类”) === “米”) {开关Btn.setAttribute(设置属性)(“类”, “英尺”);开关Btn.价值= “输入高度(米)”;仪表输入组.风格.显示= “无”;英尺输入组.风格.显示= “块”;feet输入.setAttribute(设置属性)(“必需”, "");英寸输入.setAttribute(设置属性)(“必需”, "");仪表输入.删除属性(“必需”);仪表输入.价值= "";
} 其他的 {开关Btn.setAttribute(设置属性)(“类”, “米”);开关Btn.价值= “以英尺和英寸为单位输入高度”;仪表输入组.风格.显示= “块”;英尺输入组.风格.显示= “无”;英尺输入.删除属性(“必需”);英寸输入.删除属性(“必需”);仪表输入.setAttribute(设置属性)(“必需”, "");英尺输入.价值= "";英寸输入.价值= "";
}
});
声明几个变量后,将向按钮
控制切换机制。这很简单,主要涉及更改按钮班
和<标签>
,并在按下按钮时更新两组输入的显示值。
(请注意,我们并没有在米和英尺/英寸之间来回转换,而实际的web应用程序可能会这样做。)
注:当用户单击按钮时必修的
属性从隐藏的输入中删除,并清空价值
属性。这样,如果两个输入集都没有填写,就可以提交表单。它还可以确保表单不会提交用户无意提交的数据。
如果你不这样做,你必须同时填充英尺/英寸和米提交表格!