Я делаю функцию проверки формы, и если нет пустого ввода, кнопка выполняет два щелчка для правильной работы.jQuery: кнопка отправляет форму только после двух кликов
Это моя функция:
function validate(root, animation, error) {
$('.button').on('click', function(event) {
event.preventDefault()
var isEmpty = false,
root = $(root),
animation = animation ? animation : 'animation animation-shake',
error = error ? error : 'error';
root.find('form').find('.required').each(function() {
if ($(this).val().length == 0) {
isEmpty = true;
root.addClass(animation);
$('.required.error:first').focus();
$(this).addClass(error).on('keydown', function() {
$(this).removeClass(error);
root.removeClass(animation);
});
}
});
if (isEmpty) return;
$(this).unbind('click');
});
}
Код, который вызывает функцию:
validate('#login-box .box');
Любые идеи, было бы здорово, также предложения о том, как сократить/улучшить код.
Каково предполагаемое поведение? –
Установите 'event.preventDefault()' inside 'if (isEmpty) {...}' block. Нет необходимости в операторе return или unbind click event –
'error = error || 'error'; 'выполняет ту же работу, что и' error = error? error: 'error'; ' – tewathia