Валидация HTML min max step не работает при использовании javascript для отправки

Я использовал стандартную html-валидацию для ввода чисел (min, max и шаг). Пользователь не мог написать число, превышающее этот предел, и не мог также использовать стрелки для его превышения. Мне нужно было предотвратить двойное нажатие на кнопку Submit - пользователи иногда нажимали на эту кнопку очень быстро, и она добавляла в два раза больше объектов, чем должна была добавить. Поэтому я использовал некоторые js и jQuery:

<script>
        $(document).ready(function() {
            $("#addButton").on("click", function() {
                var $this = $(this);
                $this.attr('disabled', true);
                $("#addForm").submit();
            });
        });
</script>

При таком способе отправки формы валидация исчезает. Я по-прежнему не могу использовать стрелки для превышения лимита, но пользователь может просто ввести любое значение. Есть ли другой способ решить эту проблему? Я мог бы сделать валидацию в Javascript, но там много разных объектов с разными пределами валидации. Или лучше спросить - есть ли другой способ предотвратить двойное нажатие на кнопку отправки? Я использую Django и пытался предотвратить это действие в бэкенде, используя django-ratelimit, но это не сработало так, как должно

@ratelimit(key='ip', rate='2/s')
def my_view(request):

Я перевернул логику блокировки кнопки. Когда форма отправлена, я просто отключаю кнопку и жду обновления страницы, я не отключаю ее при нажатии.

Вернуться на верх