JQuery使计数器每次更改时都会增加

JQuery making the counter increase everytime onChange

本文关键字:增加 计数器 JQuery      更新时间:2023-09-26

我在jsp中有一个文本框。我必须为文本框指定以下规则:1.当文本框被输入两次无效值时,在第三次尝试时,我将不得不在文本框中创建一个静态文本并使其不可编辑。

我有以下代码,但条件不满足:

jQuery("#rfcDetail").change(function () {
                    var string, text;
                    var counter=0;                              
                    var regex = new RegExp("[A-Za-zÑ&]{4}[0-9]{2}[0|1]{1}[0-9]{1}[0|3]{1}[0-9]{1}[a-zA-Z0-9]{3}$");
                    var regexTenCharacter = new RegExp("[A-Za-zÑ&]{4}[0-9]{2}[0|1]{1}[0-9]{1}[0|3]{1}[0-9]{1}$");
                    string = jQuery(this).val();
                    if( (regex.test(string)) || (regexTenCharacter.test(string)) ){
                        text = "";
                        document.getElementById("errorMsg").style.display = "none";
                        jQuery('input#btnNext').attr("disabled", false);
                        validrfc = true;
                    }else if(counter > 2){
                        jQuery(this).val('XAXX010101000');
                        jQuery(this).attr("disabled", true);
                        text = "";
                        validrfc = true;
                    }else{
                        counter++;
                        text="Enter valid value";
                        document.getElementById("errorText").innerHTML = text;
                        document.getElementById("errorMsg").style.display = "inline-block";
                        jQuery('input#btnNext').attr("disabled", true);
                        validrfc = false;
                    }
                    alert('Counter::'+counter);
                });

这里,当我在文本框中输入无效值时,计数器变量总是1,因为我每次都是在Change上输入。

有其他方法吗?

在函数的第二行中,每次都声明var counter=0;。所以,任何时候你改变某个东西,它都会在零开始计数器。您需要删除它,然后您需要使计数器成为一个全局变量(在您的函数之外),用于保存增量。

var counter = 0;
jQuery("#rfcDetail").change(function () { ...});