2016-12-24 74 views
0

我写了一个jquery程序来验证minlength,但它不工作。调试最小长度验证jquery程序

我不知道如何解决那里的'select_this'问题。

我是jquery的初学者。

$(document).ready(function(){ 
 
\t $('input[type="text"]').on('focus',function(){ 
 
\t \t var select_this = $(this); 
 
\t \t minlength = select_this.attr('mLength'); 
 
\t \t if(minlength != 0 && minlength > 0 && select_this.val().length < minlength){ 
 
\t \t \t select_this.after('<span>'+ minlength +' characters are required. </span>'); 
 
\t \t } 
 
\t }).keyup(function(){ 
 
\t \t if(select_this.val().length >= minlength){ 
 
\t \t \t select_this.next().remove(); 
 
\t \t } 
 
\t }).blur(function(){ 
 
\t \t select_this.next().remove(); 
 
\t }); 
 
});
\t  <p> 
 
\t \t  5<input type="text" mLength="5" /> 
 
\t \t </p> 
 
\t \t <p> 
 
\t \t  10<input type="text" mLength="10" /> 
 
\t \t </p> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

回答

2

你的变量

var select_this = $(this); 

的焦点事件处理程序内的范围仅是处理函数里面,如果你需要访问它在其他事件处理函数,然后在那里宣布它。

$(document).ready(function(){ 
 
\t $('input[type="text"]').on('focus',function(){ 
 
\t \t var select_this = $(this); 
 
\t \t minlength = select_this.attr('mLength'); 
 
\t \t if(minlength != 0 && minlength > 0 && select_this.val().length < minlength){ 
 
\t \t \t select_this.after('<span>'+ minlength +' characters are required. </span>'); 
 
\t \t } 
 
\t }).keyup(function(){ 
 
     var select_this = $(this); 
 
\t \t minlength = select_this.attr('mLength'); 
 
\t \t if(select_this.val().length >= minlength){ 
 
\t \t \t select_this.next().remove(); 
 
\t \t } 
 
\t }).blur(function(){ 
 
     var select_this = $(this); 
 
\t \t select_this.next().remove(); 
 
\t }); 
 
});
<p> 
 
\t \t  5<input type="text" mLength="5" /> 
 
\t \t </p> 
 
\t \t <p> 
 
\t \t  10<input type="text" mLength="10" /> 
 
\t \t </p> 
 
\t <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>