2016-11-29 79 views
3

我有一个输入字段,只允许数字和一个点。如何在输入字段中逗号后仅允许输入数字,逗号和两个数字?

$('.number').keypress(function(event) { 
 
    var $this = $(this); 
 
    if ((event.which != 46 || $this.val().indexOf('.') != -1) && 
 
     ((event.which < 48 || event.which > 57) && 
 
     (event.which != 0 && event.which != 8))) { 
 
      event.preventDefault(); 
 
    } 
 

 
    var text = $(this).val(); 
 
    if ((event.which == 46) && (text.indexOf('.') == -1)) { 
 
     setTimeout(function() { 
 
      if ($this.val().substring($this.val().indexOf('.')).length > 3) { 
 
       $this.val($this.val().substring(0, $this.val().indexOf('.') + 3)); 
 
      } 
 
     }, 1); 
 
    } 
 

 
    if ((text.indexOf('.') != -1) && 
 
     (text.substring(text.indexOf('.')).length > 2) && 
 
     (event.which != 0 && event.which != 8) && 
 
     ($(this)[0].selectionStart >= text.length - 2)) { 
 
      event.preventDefault(); 
 
    }  
 
});
.number { 
 
    padding: 5px 10px; 
 
    font-size: 16px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="number" />

我想这样反而用这个货币,我需要有一个逗号点。所以我用逗号替换了每个点的功能。但它不起作用。

$('.number').keypress(function(event) { 
 
    var $this = $(this); 
 
    if ((event.which != 46 || $this.val().indexOf(',') != -1) && 
 
     ((event.which < 48 || event.which > 57) && 
 
     (event.which != 0 && event.which != 8))) { 
 
      event.preventDefault(); 
 
    } 
 

 
    var text = $(this).val(); 
 
    if ((event.which == 46) && (text.indexOf(',') == -1)) { 
 
     setTimeout(function() { 
 
      if ($this.val().substring($this.val().indexOf(',')).length > 3) { 
 
       $this.val($this.val().substring(0, $this.val().indexOf(',') + 3)); 
 
      } 
 
     }, 1); 
 
    } 
 

 
    if ((text.indexOf(',') != -1) && 
 
     (text.substring(text.indexOf(',')).length > 2) && 
 
     (event.which != 0 && event.which != 8) && 
 
     ($(this)[0].selectionStart >= text.length - 2)) { 
 
      event.preventDefault(); 
 
    }  
 
});
.number { 
 
    padding: 5px 10px; 
 
    font-size: 16px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="number" />

回答

2

您需要更改46到44,为了让逗号,而不是句号......

$('.number').keypress(function(event) { 
 
    var $this = $(this); 
 
    // this next line... 
 
    if ((event.which != 44 || $this.val().indexOf(',') != -1) && 
 
     ((event.which < 48 || event.which > 57) && 
 
     (event.which != 0 && event.which != 8))) { 
 
      event.preventDefault(); 
 
    } 
 

 
    var text = $(this).val(); 
 
    // this next line... 
 
    if ((event.which == 44) && (text.indexOf(',') == -1)) { 
 
     setTimeout(function() { 
 
      if ($this.val().substring($this.val().indexOf(',')).length > 3) { 
 
       $this.val($this.val().substring(0, $this.val().indexOf(',') + 3)); 
 
      } 
 
     }, 1); 
 
    } 
 

 
    if ((text.indexOf(',') != -1) && 
 
     (text.substring(text.indexOf(',')).length > 2) && 
 
     (event.which != 0 && event.which != 8) && 
 
     ($(this)[0].selectionStart >= text.length - 2)) { 
 
      event.preventDefault(); 
 
    }  
 
});
.number { 
 
    padding: 5px 10px; 
 
    font-size: 16px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="number" />

两条线我标记为检测到用户按下了完整的停止键,并允许它(连同任何数字),但是阻止了别的。 46是一个句号的ASCII值,所以它只需要改为44,这是逗号的ASCII值。

+0

啊!谢谢,我不知道。现在它有道理:) – Jarla

+1

不客气。乐于帮助 :) – Archer

1

你只需要用44(,)替换数字46(。);

$('.number').keypress(function(event) { 
 
    var $this = $(this); 
 
    if ((event.which != 44 || $this.val().indexOf(',') != -1) && 
 
     ((event.which < 48 || event.which > 57) && 
 
     (event.which != 0 && event.which != 8))) { 
 
      event.preventDefault(); 
 
    } 
 

 
    var text = $(this).val(); 
 
    if ((event.which == 44) && (text.indexOf(',') == -1)) { 
 
     setTimeout(function() { 
 
      if ($this.val().substring($this.val().indexOf(',')).length > 3) { 
 
       $this.val($this.val().substring(0, $this.val().indexOf(',') + 3)); 
 
      } 
 
     }, 1); 
 
    } 
 

 
    if ((text.indexOf(',') != -1) && 
 
     (text.substring(text.indexOf(',')).length > 2) && 
 
     (event.which != 0 && event.which != 8) && 
 
     ($(this)[0].selectionStart >= text.length - 2)) { 
 
      event.preventDefault(); 
 
    }  
 
});
.number { 
 
    padding: 5px 10px; 
 
    font-size: 16px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="number" />

相关问题