フォーム検証機能を作成していますが、空の入力がない場合、ボタンは2回のクリックで正しく動作します。関数を呼び出すjQuery:ボタンが2回クリックするとフォームが送信されます
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');
すべてのアイデアは、コードを改善/短縮する方法についても提案素晴らしいことだ
は、これは私の関数です。
目的とする動作は何ですか? –
'if(isEmpty){...}'ブロック内に 'event.preventDefault()'を設定します。返信文やクリックイベントのバインドを解除する必要はありません –
'error = error || 'error'; '' error = error? 'と同じ仕事をしますか?エラー: 'エラー'; ' – tewathia