0

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

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

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

这里有一个 JSFiddle

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

4

5 回答 5

3

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

您仍然可以添加支票:

$(function(){
    $("#promo").keyup(function(){
    var $this = $(this);
    if ((($this.val().length+1) % 5)==0 && $this.val().length() < $this.attr("maxlength")){
      $this.val($this.val() + "-");
    }   
  });        
});
于 2013-10-17T18:09:48.880 回答
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 += "-";
        }
    });
});

演示在这里

于 2013-10-17T18:09:16.893 回答
0

您可以简单地使用 && 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/

于 2013-10-17T18:10:00.667 回答
0

我没有看小提琴,但是;

$(function(){
    $("#promo").keyup(function(){
    var $this = $(this);
    if ((($this.val().length+1) % 5)==0 && $this.val().length <= 12){
        $this.val($this.val() + "-");
        }   
    });        
});
于 2013-10-17T18:10:07.543 回答
0
$(function(){
    $("#promo").keyup(function(){
        var $this = $(this);
        if($this.val().length<14){
        if ((($this.val().length+1) % 5)==0){
            $this.val($this.val() + "-");
            }   
        }
        });        
    });

你去吧。

和这里的小提琴更新

于 2013-10-17T18:10:33.283 回答