Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

html form submission difference between click(), submit() and manual click in jquery

I have a jsp page as follows:

<script type="text/javascript" src="/mywebapp/js/jquery.js"></script>
<script type="text/javascript">         
 $( function() {  
  $('#testform').submit(function(){
   alert('now starting submit');
   return true;
  });

  $("#test1btn").click(function(){
   $('#testform #submit').click();    
  }); 
  $("#test2btn").click(function(){
   $('#testform').submit();    
  }); 
 });    
</script>
<form id="testform" method="post"  action="backend/search_test.do">
<input id="reqpagenr" name="reqpagenr" size="10">
<input type="button" id="test1btn"  value="TestClick"/>
<input type="button" id="test2btn"  value="TestSubmit"/>
<input id="submit" type="submit" value="Go">
</form>

When I manually click (i.e. using a mouse) the button "Go", the form is submitted after displaying the text "now starting submit"; when click the button "TestClick", the form is successful submitted but the text "now starting submit" doesn't come up; when click the button "TestSubmit", the text "now starting submit" appears, but the form is not submitted at all.

Contrary to my expections, the buttons "TestClick" and "TestSubmit" do not function as the button "Go" does when both are clicked. In my understanding, the three button clicks should do the same thing, that is, to submit the form after the text "now starting submit" appears. So my question is, why the results of the three button clicks is different?

I am using jquery 1.3.2

like image 649
jscoot Avatar asked Jan 20 '11 06:01

jscoot


People also ask

What is difference between submit and click in JavaScript?

submit() submits the entire form to a Servlet or anything where as $("#button1"). click() simply can be used to process anything like calling a function of javascript or even to submit the form.

What is form submit in jQuery?

jQuery submit() Method The submit event occurs when a form is submitted. This event can only be used on <form> elements. The submit() method triggers the submit event, or attaches a function to run when a submit event occurs.

What does JavaScript submit () do?

submit() allows to initiate form sending from JavaScript. We can use it to dynamically create and send our own forms to server.

What happens when you click submit on a HTML form?

Most HTML forms have a submit button at the bottom of the form. Once all of the fields in the form have been filled in, the user clicks on the submit button to record the form data. The standard behaviour is to gather all of the data that were entered into the form and send it to another program to be processed.


3 Answers

It looks like the jQuery submit event handler is getting ignored when manually setting the form submit via $('#testform').submit();

This should work in the click handler:

$('#testform').trigger("submit")
like image 102
David Pean Avatar answered Oct 06 '22 00:10

David Pean


The second button does not submit the form because of a bug in jQuery (or the DOM) which causes the submit method to fail if the submit button's id is 'submit'. See: http://bugs.jquery.com/ticket/1414

like image 32
Richard M Avatar answered Oct 05 '22 23:10

Richard M


UPDATED:

  • DEMO: http://aseptik.net/demo/html-form-submission-difference-between-click-submit-and-manual-click-in-jqu/
  1. actually as richardml said the first problem you have is a jQuery Bug so first thing is to rename the id of the submit to something else.

  2. second problem is the type of the test1btn input that should be type="submit" in order to behave like a normal submit button.

The trick is to change the type on mouse hover, so the code will look like this:

$(function() {
    $('#testform').submit(function() {
        alert('now starting submit');
    });
    //TestClick
    $('#test1btn').hover(function() {
        $(this)[0].setAttribute('type', 'submit');
    },function() {
        $(this)[0].setAttribute('type', 'button');
    });
    //TestSubmit
    $('#test2btn').click(function() {
        $('#testform').submit();
    });
});

The rest is working as expected.

hope this help

like image 42
Luca Filosofi Avatar answered Oct 06 '22 00:10

Luca Filosofi