Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery form submit

My goal is: When for is submitted:

  • a validation on form is made : OK
  • an ajax is called to see that username and password do match : OK
  • if they don't match, display an error: OK
  • if they match, then REALLY SUBMIT the form: NOT OK.

Infact the trouble is, I cannot submit the form since there is a jquery submit event on it!

function form1Submit() {
var username=$('#username').val();
var password=$('#password').val();
if (username.length<2) {
    return false;
}
if (password.length<2) {
    return false;
}
$.post("check.php", { username: username, password:password }, function(data) {
    if (data=="ko") {
        alert('bad password');
        return false;
    } else {
    //to be done here !
    }
});
    return false;
}
function init() {
   $('#form1').submit(function(){
        return form1Submit();
    })
}
$(document).ready(function(){
    init();
})
like image 281
yarek Avatar asked Sep 03 '10 19:09

yarek


People also ask

How can submit the form using jQuery?

Forms can be submitted either by clicking an explicit <input type="submit"> , <input type="image"> , or <button type="submit"> , or by pressing Enter when certain form elements have focus.

Is jQuery submit deprecated?

No, it's not deprecated! Deprecated = Not current. Obsolete = no longer available.

What is submit () in JavaScript?

The submit() method submits the form (same as clicking the Submit button). Tip: Use the reset() method to reset the form.


2 Answers

You can call the native submit event, so do this:

$('#form1').submit(form1Submit);

Then in your post callback do this:

$.post("check.php", { username: username, password:password }, function(data) {
    if (data=="ko") {
        alert('bad password');
    } else {
        this.submit();
    }
});

The this.submit() isn't calling he jQuery .submit() trigger function, but rather the native <form> .submit() function.

like image 182
Nick Craver Avatar answered Sep 17 '22 20:09

Nick Craver


The return false is blocking the default form submit action. You have either to return true from the form1Submit() function to let the default form submit action do its job, or to add another $.post() inside the else which submits the data to the form asynchronously, if your intent was to do it using ajaxical powers.

like image 20
BalusC Avatar answered Sep 17 '22 20:09

BalusC