Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE7 - <button> does not submit form

How can I make a tag in IE7 submit the form, while doing all the form validation that is setup on the form?

if I just do a document.forms[0].submit(); it submits, but ignores form validation.

Edit: Everybody likes telling me to use the input tag... That will sumbit the form but wont work in my situation which is why i asked about the button tag...

<form action="my/script" onsubmit="return ValidateFunc();">
<button> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>
like image 932
Justin808 Avatar asked Oct 26 '10 02:10

Justin808


4 Answers

First have a button with type submit as

<input type="submit" value="submit" />

In your form tag, include the onsubmit() event as

<form
     action="/path/to/server/side/script"
     name="testform" 
     onsubmit="return validate()"
     >

The validate() function should return true if the form validation goes through or a false if the validation fails. e.g.

function validate(){
   if(...){//valid
      return true;    
   }else{//not valid
      return false;
   }    
}

EDIT: Always specify the button type. If not specified, in IE it defaults to "button" while in Chrome and Firefox it defaults to "submit".

<form action="my/script" onsubmit="return ValidateFunc();">
<button type="submit"> <img src="image/do_this_with_input_tag.png"> Some Text </button>
</form>

And in future, include more details in your question if you want proper answers.

like image 126
Suresh Kumar Avatar answered Nov 01 '22 18:11

Suresh Kumar


I solved this simply by adding type="submit" to the button.

<button>Submit</button> was not submitting in IE7.

<button type="submit">Submit</button> does submit in IE7.

like image 40
James Duffy Avatar answered Nov 01 '22 16:11

James Duffy


I guess that the Validation only recognize a "submit" event from a "submit" button.

You should use a "submit" input instead of a "button" input. Then the validation mechanism will be able to intercept the submit event. you can call form.submit within the validation.submit function.

Here's the code:

<form id="theForm">
   ...
   <input type="submit" value="submitMe"/>
</form>

in Javascript:

$('#theForm').validate({
    ...
    submitHandler: function() {
        // do some trick here
        ...
        // submit the form
        $('#theForm').submit();
    }
});
like image 31
Dragoon zhang Avatar answered Nov 01 '22 16:11

Dragoon zhang


I used jquery to submit the button. If i use straight javascript if bypasses the validation setup. Jquery 's form submit runs the validation before submitting.

After additional research, the tag, even with a type="submit" cannot submit a form in older version of IE.

like image 1
Justin808 Avatar answered Nov 01 '22 16:11

Justin808