2012-03-05 2 views
0

У меня есть код отправки формы, который вызывает вызов AJAX & оттуда, если совпадение найдено.Javascript: как отменить форму представления без возврата false?

Но, так или иначе, возврат false опускается & Форма отправляется.

Я не хочу использовать return false, & необходимо отменить отправку для всех случаев. Есть ли какой-либо метод jquery для этого?

function getLogin() 
{  
    //cancel form submission code here 


    $username = $('#username').val(); 
    $password = $('#password').val(); 
    console.log('Logging- '+$username+' - '+$password); 

    callAjaxService($username, $password); // redirects according to response from this method 
} 

HTML

<form action="" method="get" onSubmit="getLogin();"> 

Фактический код в Jquery мобильных &, имеющие проблемы с return false; в конце getLogin() FUNCTION- он не может остановить Посылает форму.

+0

'return false;' самый простой способ добиться того, чего вы хотите. Просто поставьте его после вызова функции ajax. Все будет работать нормально. – davin

+0

Вы можете использовать 'event.preventDefault()', но почему бы вам не хотеть 'return false'? – nnnnnn

+0

Как вызывается метод getLogin()? –

ответ

0

Почему вы просто не задали параметр действия справа?

action="javascript:;" 

КСТАТИ: еще лучшее решение было бы установить действие рического это на $ (окно) .load (..). Почему? Потому что, если вы хотите, чтобы форма использовалась при отключении JS, это необходимо сделать.

2

Предполагая, что getLogin привязан к форме кнопки отправки/ссылку, вы можете использовать preventDefault и stopPropagation

function getLogin(e) 
{  
    //cancel form submission code here 
    e.preventDefault(); 
    e.stopPropagation(); 
} 

Избавьтесь от onSubmit="getLogin();"

<form id="uniqueID" action="" method="get"> 

, а затем использовать ready

$(function(){ 
    $("#uniqueID").click(getLogin); 
}) 
+0

Как вызвать getLogin(); из HTML с событием как param? –

+0

Как вы это называете сейчас? –

+0

Plz проверить мое редактирование в вопросе- hv добавил HTML –

0

Если обработчик i S не возвращает ложь, либо логика problem..or скорее всего, ошибка брошена в обработчике до того кода достигнет возвращения

Попробуйте использовать event.preventDefault() перед вашим другим кодом в обработчике

http://api.jquery.com/event.preventDefault/

1

Я не уверен, как называется getLogin()? И у вас есть кнопка вроде <input type="submit" onclick="getLogin()">, которая отправляет форму.

Если это так, добавьте обработчик щелчка и реализовать код там, как показано ниже,

HTML:

<input type="submit" onclick="getLogin()" id="submit_btn"> 

JS:

$('#submit_btn').click (function (e) { 
    e.preventDefault(); //this should stop the form submission. 

    getLogin(); 
}); 
+0

Функция getLogin() {} находится в общем js-скрипте, который вызывается из многих файлов, и я не хочу добавлять этот $ ('# submit_btn') .click (funct ...) ко всему документу страницы .ready() {}. Просто хочу изменить getLogin() –

1

я не знаю точно если эта работа, но я бы попытался оснастить обработчик отправки:

$('#myform').submit(function(){ 
    var user = $('#username').val(); 
    var pw = $('#password').val(); 
    $.ajax(..., { success: function(data){ 
    if(data.condition)$('#myform').submit(); 
    else window.location = 'redirect.html'; 
    }); 
    return false; 
}); 

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

$('#myform').submit(ev, function(){ 
     ev.preventDefault(); 
    ... 

но return false должен работать, как хорошо.

+0

Функция getLogin() {} находится в общем js-скрипте и не хочет изменять каждый document.ready() {} на каждой странице; чтобы добавить этот фрагмент. Есть ли способ поймать событие в этом getLogin() {} или отправить событие как параметр из HTML? –

+0

yes, передать событие 'getLogin (ev)' и/или сделать селектор формы определенным соглашением. или получить форму, поднявшись с элемента '# username', я думаю' $ ('# username'). form(); '? – mindandmedia

+0

Может ли u plz разработать - как передать ev из HTML? onSubmit = "getLogin (!!);" ? –

0
function getLogin() 
{ 
    var e = window.event; 
    e.preventDefault(); 


    $username = ... 
    ... 

} 
Смежные вопросы