Val*_*era 10 html javascript jquery paste jquery-events
我正在捕捉粘贴事件 $('selector').on('input', function(event) { ... });
然后我试图测试粘贴的内容,如果没有通过验证,请取消粘贴event.preventDefault().不幸的是,到执行监听器功能时,文本已被粘贴并且event.preventDefault()什么都不做.
那么什么是捕获粘贴事件的好方法,如果粘贴的内容未验证,请撤消/阻止粘贴?
我知道我可以使用.on('paste', function(event) { ... }),但这不会给我粘贴的文本或粘贴后的输入元素的内容,除非我使用setTimeout()一些分钟的等待时间,我想避免使用setTimeout().
小智 -1
我对这个问题的理解是,除非通过特定的验证,否则我们不得允许将任何数据粘贴到文本框中。我们可以不使用event.preventDefault(),而是在用户输入任何内容时捕获该值,使用on('input')侦听器并根据特定条件对其进行验证,如果验证失败,则清空文本框值。
(如果我们仍然需要使用on('input')事件监听器,这是解决方法)
示例代码(我用于console.log()打印粘贴的值):
HTML:
<input type='text' id="selector" />
Run Code Online (Sandbox Code Playgroud)
JS:
$(document).ready(function() {
$('#selector').on('input', function (e){
if(e.target.value !== "myValue"){
$('#selector').val('');
}
else{
console.log(e.target.value);
}
});
});
Run Code Online (Sandbox Code Playgroud)