最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Re-enabling Submit after prevent default - Stack Overflow

programmeradmin1浏览0评论

I am trying to unbind or reenable the prevent default so my form will submit on good data.

I have tried multiple examples. Here is my code and some of the examples i tried.

This code works great for what i want to. Just the last thing and resetting the div which i can implement after i get this.

function lengthRestriction(elem, min, max) {
    var uInput = elem.value;
    if (uInput.length >= min && uInput.length <= max) {
        return true;
    } else {
        var cnt = document.getElementById('field');
        cnt.innerHTML = "Please enter between " + min + " and " + max + " characters";
        elem.focus();
        $('#ShoutTweet').submit(function(e) {
            e.preventDefault();

            //bind('#ShoutTweet').submit();
            //$('#ShoutTweet').trigger('submit'); 
        });
    }
}​

i have a jsbin set up too

I am trying to unbind or reenable the prevent default so my form will submit on good data.

I have tried multiple examples. Here is my code and some of the examples i tried.

This code works great for what i want to. Just the last thing and resetting the div which i can implement after i get this.

function lengthRestriction(elem, min, max) {
    var uInput = elem.value;
    if (uInput.length >= min && uInput.length <= max) {
        return true;
    } else {
        var cnt = document.getElementById('field');
        cnt.innerHTML = "Please enter between " + min + " and " + max + " characters";
        elem.focus();
        $('#ShoutTweet').submit(function(e) {
            e.preventDefault();

            //bind('#ShoutTweet').submit();
            //$('#ShoutTweet').trigger('submit'); 
        });
    }
}​

i have a jsbin set up too http://jsbin.com/ebedab/93

Share Improve this question edited Mar 25, 2012 at 0:40 Michael Hahn asked Mar 25, 2012 at 0:34 Michael HahnMichael Hahn 1431 gold badge5 silver badges12 bronze badges 1
  • You could try e.preventDefault() in the submit event of the form and self.submit() for the opposite effect – dimirc Commented Mar 25, 2012 at 0:40
Add a comment  | 

4 Answers 4

Reset to default 8

Don't try to set up and cancel a submit handler from within your validation function, do it the other way around: call the validation from within a single submit handler, and only call .preventDefault() if the validation fails:

$(document).ready(function() {

    $('#ShoutTweet').submit(function(e) {
       if (/* do validations here, and if any of them fail... */) {
          e.preventDefault();
       }
    });

});

If all of your validations pass just don't call e.preventDefault() and the submit event will then happen by default.

Alternatively you can return false from your submit handler to prevent the default:

    $('#ShoutTweet').submit(function(e) {
       if (!someValidation())
          return false;

       if (!secondValidation())
          return false;

       if (someTestVariable != "somevalue")
          return false;

       // etc.
    });

I'm not completely sure what you are asking, but if your goal is to destroy your custom submit handler, then use this:

$("#ShoutTweet").unbind("submit");

This assumes that you have a normal (not Ajax) form.

Just call submit on the form

$('#ShoutTweet').submit();

This works surely and enable form submission after event.preventDefault();

$('#your-login-form-id').on('submit', onSubmitLoader);

function onSubmitLoader(e) {
    e.preventDefault();
    var self = $(this);
    setTimeout(function () {
        self.unbind('submit').submit(); // like if wants to enable form after 1s
    }, 1000)
}
发布评论

评论列表(0)

  1. 暂无评论