首页 > 解决方案 > 当用户按键盘 5 次时执行 ajax 功能

问题描述

我想执行一个ajax函数。当且仅当用户按下他的键盘 5 次时,必须执行此 ajax 函数。

我将 Jquery 用于 ajax 请求。

我试试这个,但它仍然无法正常工作:

// What i tried to do 
$("#num_cppap").keypress(function(event){
if (event.which == 5){
// The AJAX function
$( "#num_cppap" )
       .focusout(function() {
        var numCppap = $(this).val();
        var isBizarre = false;
        var searchBy5Chars = false;
        if(numCppap.length > 0) {
            if(numCppap.length == 5){
                searchBy5Chars = true;
                $.ajax({
                    type : "POST",
                    url : '/gestion/gestDepot/ajaxrecherchecppap',
                    async : false,
                    dataType : 'json',
                    data : {
                        'num_publication' : numCppap,
                        'isBizarre' : isBizarre,
                        'searchBy5Chars' : searchBy5Chars
                    },
                    success : function(publication) {
                        if ($.isEmptyObject(publication)) {
                            resetTitreDepot('num_cppap');
                            alert('Le numéro de CPPAP ne correpond à aucun contrat.');
                        } else {
                            $(this).dialog('close');
                            $("#noPublicationCPPAP").hide();

                            gestionTitreDepot(publication);
                        }

                   }
                 });
             }
         } 
        else {
            resetTitreDepot('num_cppap');
        }
    })
    }
    else {
        alert('you stupid');
    }
});

如果您有一些文件或其他东西可以帮助我,那就太好了!

感谢您的关注 !

标签: jqueryajaxkeypress

解决方案


您可以创建一个变量,如var number=0;,并在keypress函数内部增加它:number++;

然后将您要运行的代码放入以下if语句中:

if(number==5){...}

这意味着每按一次键,数字就会增加,一旦达到5,里面的代码if(number==5){...}就会运行。

这是一个基本示例:

$(function(){
var number=0;
$("#text").on("keypress",function(){
number++;
if(number==5){
alert("Pressed 5 times!");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" placeholder="Write 5 characters here" id="text">

或者,如果您希望它在每次按键 5 次时运行,您可以替换if(number==5)if(number%5==0)

$(function(){
var number=0;
$("#text").on("keypress",function(){
number++;
if(number%5==0){
alert("Pressed 5 times!");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" placeholder="Write 5 characters here" id="text">

你也可以在你的函数中实现这个方法,在ajax调用之前,写这个:if(number==5)if(number%5==0)。然后ajax只有在任何键被按下 5 次时才会运行。


推荐阅读