非常好的问题哥们。
您需要在设置值后清除/重置setCustomValidity
。但不幸的是,Chrome以奇怪的方式处理.setCustomValidity
。而且由于.setCustomValidity
由浏览器处理,所以问题依赖于浏览器。切换到完整的JS验证并删除使用.setCustomValidity
修复问题的部件。
您通常可以清除setCustomValidity
通过setCustomValidity('')
将其设置为空字符串,但它不会因为浏览器上提交你需要重写怎么样,我已经向下面
Fiddle here
如何验证解决?
诀窍是
浏览器必须调用交互验证之前“提交”事件被触发。如果您希望浏览器再次显示验证消息,则需要在'submit'事件之前重置setCustomValidity()。
$('[type=number]').on('invalid', function() {
this.setCustomValidity('This is an invalid number');
});
$('[type=number]').on('input', function() {
console.log('setCustomValidity() reset');
this.setCustomValidity('');
});
$('form').on('submit', function() {
console.log('submitted');
});
不错,它完美的解决了这个问题!谢谢 – CIRCLE