如何在Django中使用JQuery限制字符?

问题描述 投票:0回答:1

我希望限制用户仅将五个字符用于邮政编码。这是我到目前为止所拥有的(这似乎不起作用)。我要寻找的是如果有人不小心提交了五个以上的字符,那么该脚本将删除除五个最近的字符以外的所有字符。这是最好的路线吗?

sign-up.html

<script>
          var max_chars = 5;

          $('#zip_length').keydown( function(e){
              if ($(this).val().length >= max_chars) {
                  $(this).val($(this).val().substr(0, max_chars));
              }
          });

          $('#zip_length').keyup( function(e){
              if ($(this).val().length >= max_chars) {
                  $(this).val($(this).val().substr(0, max_chars));
              }
          });
      </script>
...
<form action="" method="POST" class="mt-4" enctype="multipart/form-data">
                            {% csrf_token %}
                            {% crispy form %}
                        </form>
...

forms.py

...
 zip = forms.CharField(label='Zip', required=True,
                          widget=forms.TextInput(attrs={'placeholder': 'Enter your zip', 'id': 'zip_length'}))
...

def __init__(self, *args, **kwargs):
        super(ProfileUpdateForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
            ...
            Row(
                Column('city', css_class='form-group col-4'),
                Column('state', css_class='form-group col-4'),
                Column('zip', css_class='form-group col-4')
            ),
            ...
        )
python django
1个回答
1
投票

看起来您正在寻找form length validator

实际上您可以这样写:

zip = forms.CharField(label='Zip', max_length=5, min_length=5 required=True, widget=forms.TextInput(attrs={'placeholder': 'Enter your zip', 'id': 'zip_length'}))

我不确定您的用例是什么,但是处理此错误的最用户友好的方法是向用户显示错误消息,以便她可以更正输入。如果您无声地截断最后一部分,则从技术上讲,它可能会使输入在技术上正确无误,但从用户角度来看是错误的。

也吉姆是正确的,也许您的所有用户的邮政编码长度都不会超过5个字符。

© www.soinside.com 2019 - 2024. All rights reserved.