2014-08-16 3 views
1

Я искал возраст для решения этой проблемы, я знаю, что нет никакого типа решения по умолчанию для восстановления. Однако вот моя проблема.Повторное включение event.preventDefault();

$('#signInbtn').click(function(event) { 
    checkLogInForm(event); 
}); 

это проверяет логин в полях, чтобы подтвердить, что они не остаются пустыми, например, так:

function checkLogInForm(event) { 
    var usernameValid, passwordValid = false; 
    checkUsername(usernameValid); 
    checkPassword(passwordValid); 
    if (!passwordValid || !usernameValid) { 
     event.preventDefault(); 
    } else { 
     $('#signInbtn').unbind('submit'); 
    } 
} 

Однако многочисленные решения я не пробовал никогда привести в виде фактически представление, когда еще срабатывают , Любые идеи о том, как я могу возобновить/представить поведение по умолчанию? или даже альтернативный подход. Спасибо за любую помощь!

+0

Можете ли вы сделать Fiddle своей проблемы. Итак, вы говорите, что попадаете в бит 'else', но форма не отправляется. – putvande

+0

Да, это правильно. –

+0

Опубликуйте свой HTML (и скрипка поможет). – j08691

ответ

0

Попробуйте использовать «Отправить» событие с формой ID или имя формы в качестве селектора JQuery, например:

$('#signInForm').submit(function(event) { 
    checkLogInForm(event); 
}); 

Ваш метод checkLogInForm (событие) может оставить заявление еще, если форма должна быть представлена ,

1

fiddle

Одним из решений было бы оценить, следует ли применять действие preventDefault:

/** 
*  toggle status if preventDefaultStatus is true 
*/ 
function updateStatus(preventDefaultStatus) { 
    return (preventDefaultStatus === true) ? false : true; 
} 

/** 
*  toggle preventDefault 
*/ 
function toggleDefault(isActive) { 

    submitElement.onclick = function(e){ 

     if(isActive === true){ 

      e.preventDefault(); 

     } 
    }  
} 

/** 
*  trigger toggleDefault and updateStatus 
*/ 
function update(){ 
    toggleDefault(status); 
    status = updateStatus(status); 
} 


exampleButton.onclick = update; 


(function(){ 
    update(); 
})(); 

(написан на чистом JavaScript, чтобы уточнить, что это относится, независимо от того, или нет, вы используете JQuery) В jQuery вы просто замените обработчики onclick на .click (function (e) {})