jekahm писал(а):rugabarbo писал(а):А почему должно быть "моментально"? (:
Потому как логично, что в ином случае форма будет отправлена несколько раз, если кнопка не будет заблокирована мгновенно.
В идеале после прохождения валидации должно быть, как здесь
https://jsfiddle.net/m146a9b2/
В идеале да, но включите JS-профайлер и посмотрите, сколько там всего происходит и может происходить до вызова beforeSubmit. Не удивительно, что при зажатом Enter успевает проскочить 2-3 клика - это всё-таки асинхронная среда.
Вот здесь идёт обсуждение защиты от double-сабмитов на серверной стороне:
https://github.com/yiisoft/yii2/issues/10498
Если вам нужно 100% защититься от двойных кликов, то это не решить с помощью JavaScript. Я тоже делаю для всех важных кнопок:
- и в 99.9% случаев это позволяет защититься. Но практика показывает, что в 0.1% случаев всё-таки находятся кретины, успевающие нажать сабмит очень-очень быстро два раза подряд
Хотите гарантий - это не про JavaScript.
JavaScript - про удобство клиента.