我有一个搜索表单,当有人在其中输入内容时,它会做出反应。我希望它在粘贴内容时也能做出反应,可以吗?现在,粘贴的文本后面必须有一个空格。
我有一个搜索表单,当有人在其中输入内容时,它会做出反应。我希望它在粘贴内容时也能做出反应,可以吗?现在,粘贴的文本后面必须有一个空格。
<input type="text" name="search_text" id="search_text" placeholder="" class="fontAwesome" />
<div id="result"></div>
<script>
$(document).ready(function () {
load_data();
function load_data(query) {
$.ajax({
url: "oSearch.php",
method: "POST",
data: { query: query },
success: function (data) {
$("#result").html(data);
},
});
}
$("#search_text").keyup(function () {
var search = $(this).val();
if (search != "") {
load_data(search);
} else {
load_data();
}
});
});
</script>
您可以使用 \'paste\' 事件,请参阅下文如何使用 jquery 监听多个事件
function debounce(callback, delay) {
var timeoutHandler = null;
return function () {
clearTimeout(timeoutHandler);
timeoutHandler = setTimeout(function () {
callback();
}, delay);
}
}
$('#search_text').on('keyup paste', debounce(function(e){
console.log($('#search_text').val());
}, 500));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<input type="text" name="search_text" id="search_text" placeholder="" class="fontAwesome">
PS:我建议使用某种\'节流\'来避免每次键入时都进行 ajaxcall(粘贴也会触发键入),请参阅-> 如何延迟 .keyup() 处理程序直到用户停止输入?