非常好的問題哥們。
您需要在設置值後清除/重置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