我有一个客户希望我用逗号和美元符号来标点所有货币输入。这意味着,我必须使用文本输入而不是数字输入,这意味着我不能利用数字输入的内置验证,主要是最小、最大、步长,也不能简单地验证用户输入的实际上是一个数字字符串。因此,我的想法是创建实际数字输入的文本输入副本,隐藏实际数字输入,在用户键入时格式化文本输入的内容,并将其复制到隐藏的数字输入中,以便从那里验证和提交。javascript显示隐藏数字输入中可能弹出的验证错误的最佳方式是什么?我特别关注约束验证api:
https://developer.mozilla.org/en-US/docs/Web/API/Constraint_validation
以下是示例html:
<!-- hidden actual input field -->
<input id="real" name="cost" type="number" min="0" max="1000" step=".01" style="display:none;" />
<!-- visible, fake, punctuated input field -->
<input id="punctuated" type="text" />
因此,我想找到一种方法,将DOM中的任何验证对象作为第一个输入,并将它们复制到第二个输入。到目前为止,我已经尝试过了(见下文(,但validity和validationMessageDOM属性似乎是只读的:
var punctuated = document.getElementById('punctuated');
var real = document.getElementById('real');
punctuated.validationMessage = real.validationMessage;
punctuated.validity = real.validity;
第一个选项:将同一个类添加到两个输入并使用document.getElementsByClassName('some-class'(
第二个选项:要使用单个输入并打开(keyup(,请调用验证函数,该函数将检查用户输入是否与您需要的正则表达式匹配
这似乎是答案:
punctuated.setCustomValidity(real.validationMessage);
我只是将其绑定到页面加载,以及用于标点输入的点击和键控事件,它似乎起作用了。因此,当用户在有标点符号的输入中键入内容时,它会被复制到实际输入中,并使用html属性进行验证,然后单击和键控事件会将验证消息传递给有标点符号输入。