我有一个类型为number的输入标签,附有模式验证,至少要注意消除'e''+'' - '字符的输入。然而 '。'由于某种原因,符号仍然存在。以下是我的程序代码的相关部分:
@Test
从我自己的研究到目前为止,我在StackOverflow上遇到过一个关于输入类型编号输入模式的问题。简而言之,该帖子确认输入模式不适用于输入类型编号。它建议使用输入类型文本而不是模式的解决方案只允许数字通过。但是,我想将输入类型保持为数字,因为向上/向下箭头增加/减少输入字段中的数字。我愿意将输入类型改为文本,只要它们是一种保持上/下箭头的方法。
我也看到如果我从输入标签中删除模式,我的'input'事件监听器仍然成功地处理不允许'e''+'' - '字符的某种方式。当然,'。'当它不应该时,它仍然被允许。所以我想至少我确认这个模式实际上并没有从我能说的内容中做任何事情。
更具体地说,如果'。'键入作为第一个字符,验证检查成功运行,输入字段中没有任何内容出现,这是所需的行为。但是,如果输入的第一个字符是数字,则输入的第二个字符是'。'符号,然后由于某种原因'。'符号出现时应该没有。
答案 0 :(得分:0)
找出解决问题的方法。
document.getElementById('job-priority').addEventListener('input', function () {
// Check that characters typed into job priority field are valid.
document.getElementById('job-priority').type = 'text';
if (!document.getElementById('job-priority').validity.valid) {
var value = document.getElementById('job-priority').value;
value = value.slice(0,-1);
document.getElementById('job-priority').value = value;
}
document.getElementById('job-priority').type = 'number';
});
你会看到我所做的是暂时将输入类型更改为'text'以进行输入验证。然后,一旦完成,立即将输入类型更改回“数字”。