jquery: запретить отправку формы браузера по умолчанию, но отправить форму с помощью jquery? - PullRequest
1 голос
/ 22 февраля 2011
$('#search_form').submit(function(e) {
    //e.preventDefault();
    return false;
})

Это прекрасно работает для предотвращения отправки формы при нажатии Enter.

Однако даже если у меня есть это, я хочу отправить форму с jquery, если определенные обстоятельства верны.

редактирование:

$('#search_form').submit(function(e) {
    return !!e.submit;
});

function ...

    if (e.keyCode == 13) {

        if (blablabla) {

            ... // do something

        } else {
            $('#search_form').submit({submit:true}); //doesn't work
            console.log('submitted'); //this does successfully get fired
        }

    }

Если я нажму, введите, форма не будет отправлена, но вход в консоль произойдет!

Ответы [ 2 ]

7 голосов
/ 22 февраля 2011
$('#search_form').submit(function(e) {
   if($('.errors').is(':visible')){
        e.preventDefault();
        // do something else here// some errors are visible :)
        return false; 
   }else{

   }
})
5 голосов
/ 12 апреля 2013

Проверяя тип e.originalEvent, мы можем определить, отправил ли человек (тип объекта) или сценарий (тип неопределенный) форму:

$('#search_form').submit(function(e) {
    if (typeof e.originalEvent !== 'undefined') {
        e.preventDefault();
    }
})

Вызовите триггер jquery для отправки формы:

$('#search_form').trigger('submit');
...