我有这个代码来接受有效的int或float数字。
$("input").on("keypress", function(event) {
$(this).val($(this).val().replace(/[^0-9\.]/g, ''));
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});但是,我无法通过copy-paste和rightclick-paste事件捕获用户输入数据。
我尝试过$("input").on("input",...,但不起作用。请看下面的小提琴演示。
发布于 2017-05-12 00:15:11
您可以监听paste事件并选中numeric after 0 0ms setTimeout,以便将值粘贴进去。你会看到任何粘贴进去的东西的闪光,所以这不是一个理想的解决方案,但可能是可行的。
$("input").on("keypress", function(event) {
$(this).val($(this).val().replace(/[^0-9\.]/g, ''));
if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
$("input").on("paste", function(event) {
var element = $(this);
setTimeout(function(){
element.val(element.val().replace(/[^0-9\.]/g, ''));
}, 0);
});https://stackoverflow.com/questions/43920323
复制相似问题