Javascript Django客户端对十进制字段限制的验证

Javascript Django客户端对十进制字段限制的验证,javascript,jquery,python,django,django-models,Javascript,Jquery,Python,Django,Django Models,我想在客户端将django model decimal字段限制为4位,这意味着该字段不允许用户输入超过4位数字 我尝试下面的代码,但它得到验证后,才保存,但我需要限制,而用户输入数字 unit_price = models.DecimalField(db_column='UNIT_PRICE', max_digits=4, decimal_places=2) 您是否尝试过在表单定义中使用小部件 unit_price = forms.DecimalField( widget=forms.

我想在客户端将django model decimal字段限制为4位,这意味着该字段不允许用户输入超过4位数字

我尝试下面的代码,但它得到验证后,才保存,但我需要限制,而用户输入数字

unit_price = models.DecimalField(db_column='UNIT_PRICE', max_digits=4, decimal_places=2)

您是否尝试过在表单定义中使用小部件

unit_price = forms.DecimalField(
    widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99' }))

您必须使用一点javascript来限制用户输入超过4位数字。请在表单和javascript文件中使用下面的代码段

形式

javascript


通过这种方式,用户的输入也可以限制在按键上的4个位置

感谢您的回复,在表单中添加js的效果与我接受的一样。“加一”效果很好,非常感谢@Gowtham的快速解决方案,但在输入4位数字后,我无法删除这些数字。@Sohan我现在已经更正了答案。您无法删除,因为在输入4位数字后将执行部分条件,因此请检查KeyCode谢谢编辑。对于普通的管理表单来说,它工作得很好,但是当我在管理列表行中尝试同样的事情时,JS代码没有反映出来,我想我不能传递正确的getElementById,因为它在每一行中都不断变化,对吗?在这种情况下,我如何实现同样的目标?
unit_price = forms.DecimalField(
    widget=forms.NumberInput(attrs={'step': '0.01', 'min': '0.00', 'max': '99.99', onkeypress: 'return isValid(event)'}))
function isValid(event) {
  var val = document.getElementById('test').value;
  val = val.split('.').join('');
  event = (event) ? event : window.event;
  var charCode = (event.which) ? event.which : event.keyCode;
  if (val.length < 4 || charCode == 8 || charCode == 37 || charCode == 39 || charCode == 46){
     return true;
  }
  else {
     return false;
  }
}