JQuery使计数器每次都在增加

时间:2016-05-19 17:29:07

标签: javascript jquery

我在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,因为我每次都在onChange上进行。

是否有替代方法。

1 个答案:

答案 0 :(得分:0)

在您的函数的第二行,您每次都声明var counter=0;。 因此,每当你改变某些东西时,它都会将计数器置于零。你需要删除它,然后你需要使计数器成为一个包含增量数的全局变量(在你的函数之外)。

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