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

时间:2017-01-13 04:53:20

标签: javascript jquery python django django-models

我想将django模型十进制字段限制在客户端本身的4个位置,这意味着字段不允许用户输入超过4位数。

我尝试了下面的代码,但是只有在保存后才能进行验证,但我需要在用户输入数字时进行限制。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您必须使用一些小的javascript来限制用户输入超过4位的数字,并在表单和javascript文件中使用以下代码段

<强>形式

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

<强>的javascript

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;
  }
}

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