30

I want to submit a with using jquery as below;

$("#formid").submit();

Its working perfect in all browsers except IE6.

How to make it work in IE6 ??

8 Answers 8

64

You probably have an <input name="submit" /> somewhere in your form, which overwrites the function "submit" of the form in IE.

Edit:

I have tested in some other browsers. The latest versions of all major browsers seem to be affected by this issue.

  • IE - all versions
  • Firefox 4+
  • Chrome at least since version 12
  • Opera at least since version 11

Bottom line: Never name your inputs "submit", or any other default property or method of the form element (e.g. "action" or "reset") . See MDC for a complete overview.

Sign up to request clarification or add additional context in comments.

8 Comments

Yups. I have an input tag (button) name as "submit" and that was creating problem. Thanks!
Wow nice catch. Was not aware of this.
Extremely useful bit of info. Probably saved me an hour of troubleshooting. NOTE: This is not restricted to IE6.
I noticed this problem using Firefox 4 as well. Thanks for the help.
Also had the problem for days now in ff4. Didn't know that. Thanks.
|
14

I had a similar problem when I was about to submit the form via an A-element. I had set the href attribute to "javascript:;" to let the main jQuery script handle the actual submit but it just wouldn't work in IE6.

jQuery main script:

$(".submitLink").click(function(){
$(this).parent()[0].submit();
$(this).addClass("loading");
});

My solution was to change the href attribute from "javascript:;" to "#".

3 Comments

Excellent, in my case I set the href to "javascript:void(0);". All events hooked into click() fired, but the form would not submit. Changing the href to "#" fixed it. Thanks!
Same problem as Peter, fixed. Thanks a lot!
$(".submitLink").click(function(event){ event.preventDefault(); // prevent browser from scrolling to top of page });
3

You could try $("#formid").trigger("submit"), though I doubt it'll give you a different result.

Comments

2

I've recently had a similar issue, where I was creating a "pseudo-form" within an ASP.NET server form (so I couldn't use another form tag), which I wanted to post to another domain without needing to write server-side code to do the remote post. Easy answer - create a form on the fly and submit it. Works in good browsers...

After some trials and tribulations, I realised that IE won't work as expected (what a surprise) unless the form that is being submitted has been added to DOM. So, this was my solution. I hope it helps some of you. Please be aware, all of my inputs and my submit were in the same container. ".post-to" is a hidden input with the URL.

$(".post-form").click(function(ev) {

    var postto = $(this).siblings(".post-to").val();    
    var form = document.createElement("form")
    $(form).attr("id", "reg-form").attr("name", "reg-form").attr("action", postto).attr("method", "post").attr("enctype", "multipart/form-data");

    $(this).siblings("input:text").each(function() {
        $(form).append($(this).clone());
    });

    document.body.appendChild(form);
    form.submit();
    document.body.removeChild(form);

    return false;
});

Eventually, it works a treat.

Comments

1

Don't forget to return false; if you're on an tag

Comments

0

Add a button in your form with type="submit"

Reference.

Comments

-1

Just add a

window.setTimeout(function(){
    $("#formid").submit();
}, 300);

1 Comment

Why I received a -1? Here the "setTimeout" solution works perfectly.
-1
...

$('.bt_ok').bind('click', function() {
    $('#form_autosuggest').submit();
    return false;
});

...

Add after: return false; for IE6

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.