jQuery add - to input但只添加两次

时间:2013-10-17 18:06:38

标签: javascript jquery

我这里有这个小脚本...它在每4个字符后添加一个“ - ”但我需要它不添加 - 在12个字符之后。

$(function(){
$("#promo").keyup(function(){
    var $this = $(this);
    if ((($this.val().length+1) % 5)==0){
        $this.val($this.val() + "-");
        }   
    });        
});

但是在12个字符的末尾添加了一个“ - ”,尽管我的字符数限制为14。

我有JSFiddle here

我如何防止这种情况发生?

5 个答案:

答案 0 :(得分:3)

maxlength属性不会阻止您使用Javascript修改<input>值。

您仍然可以添加支票:

$(function(){
    $("#promo").keyup(function(){
    var $this = $(this);
    if ((($this.val().length+1) % 5)==0 && $this.val().length() < $this.attr("maxlength")){
      $this.val($this.val() + "-");
    }   
  });        
});

答案 1 :(得分:1)

您可以在if:

中添加此内容
if ($this.val().length > 12) {
    return false;
}

代码建议(少用jQuery):

$(function () {
    $("#promo").keyup(function () {
        if (((this.value.length + 1) % 5) == 0) {
            if (this.value.length > 12) {
                return false;
            }
            this.value += "-";
        }
    });
});

演示here

答案 2 :(得分:0)

你可以简单地使用&amp;&amp; AND运算符,并使其成为条件,如果val.length大于11

,则不会发生任何事情
$(function(){
    $("#promo").keyup(function(){
        var $this = $(this);
        if ((($this.val().length+1) % 5)==0 && $this.val().length <=11){
            $this.val($this.val() + "-");
            }   
        });        
    });

http://jsfiddle.net/sAu32/3/

答案 3 :(得分:0)

我没看小提琴,但是;

$(function(){
    $("#promo").keyup(function(){
    var $this = $(this);
    if ((($this.val().length+1) % 5)==0 && $this.val().length <= 12){
        $this.val($this.val() + "-");
        }   
    });        
});

答案 4 :(得分:0)

$(function(){
    $("#promo").keyup(function(){
        var $this = $(this);
        if($this.val().length<14){
        if ((($this.val().length+1) % 5)==0){
            $this.val($this.val() + "-");
            }   
        }
        });        
    });

你去。

小提琴更新here