У меня есть форму Rails Devise, которая имеет проверку javascript. Когда пользователь нажимает кнопку «Отправить», валидация работает, и пользователь переориентируется на форму, в которой они должны быть.Rails data-disable-with re-enable button
Однако рельсы используют функцию отключения данных, чтобы отключить кнопку после ее нажатия, поэтому после проверки пользователь не может нажимать кнопку «Отправить». Я пытаюсь настроить своего слушателя, чтобы проверить, когда кнопка была отключена, подождите немного, чтобы предотвратить двойные щелчки, а затем снова включите кнопку.
Я пробовал много итераций кода, последний я попытался было:
$(document.on("ajax:success", "new_supplier", function() {
var button;
button = $(this).find('.btn-sign-up');
setTimeout((function() { return button.disabled=false; }),1);
});
Но успеха не имел, ранее я попытался просто добавить слушателя к кнопке:
var button = document.getElementById('btn-sign-up');
button.addEventListener("click", enableButton);
function enableButton() {
if (button.disabled)
{
window.setTimeout(enable(), 2000);
}
}
function enable() {
button.disabled=false;
}
Но это не удалось, потому что он работал до функции (скрытой в rails ether), которая отключила кнопку, поэтому не работала.
кнопку Моя представить простой:
<%= f.submit "Create my account", class: 'btn-sign-up', id: 'btn-sign-up' %>
Может кто-нибудь помочь мне здесь? Я думаю, что если я могу отключить jQuery_ujs для этой страницы, которая будет работать, но не уверен, смогу ли я это сделать.
Было ли Rails 5, который добавил это? Просто потратил час на отладку: «Кто, черт возьми, меняет мою проклятую кнопку отправки!» Как грубо UJS. Это, похоже, выполняет эту работу. – Mike
Манипулирование страницей после загрузки с помощью JS в качестве средства для обеспечения поведения по умолчанию является плохой практикой. – Archonic