Submit two forms with one button

后端 未结 7 1504
面向向阳花
面向向阳花 2020-11-22 04:20

I have HTML two forms, one that submits data upon entry to a database using PHP, the other directs the user to a paypal payment page, my problem is that the user would have

相关标签:
7条回答
  • 2020-11-22 04:47

    The currently chosen best answer is too fuzzy to be reliable.

    This feels to me like a fairly safe way to do it:

    (Javascript: using jQuery to write it simpler)

    $('#form1').submit(doubleSubmit);
    
    function doubleSubmit(e1) {
        e1.preventDefault();
        e1.stopPropagation();
        var post_form1 = $.post($(this).action, $(this).serialize());
    
        post_form1.done(function(result) {
                // would be nice to show some feedback about the first result here
                $('#form2').submit();
            });
    };
    

    Post the first form without changing page, wait for the process to complete. Then post the second form. The second post will change the page, but you might want to have some similar code also for the second form, getting a second deferred object (post_form2?).

    I didn't test the code, though.

    0 讨论(0)
  • 2020-11-22 04:48

    You can submit the first form using AJAX, otherwise the submission of one will prevent the other from being submitted.

    0 讨论(0)
  • 2020-11-22 04:49

    You should be able to do this with JavaScript:

    <input type="button" value="Click Me!" onclick="submitForms()" />
    

    If your forms have IDs:

    submitForms = function(){
        document.getElementById("form1").submit();
        document.getElementById("form2").submit();
    }
    

    If your forms don't have IDs but have names:

    submitForms = function(){
        document.forms["form1"].submit();
        document.forms["form2"].submit();
    }
    
    0 讨论(0)
  • 2020-11-22 04:50

    A form submission causes the page to navigate away to the action of the form. So, you cannot submit both forms in the traditional way. If you try to do so with JavaScript by calling form.submit() on each form in succession, each request will be aborted except for the last submission. So, you need to submit the first form asynchronously via JavaScript:

    var f = document.forms.updateDB;
    var postData = [];
    for (var i = 0; i < f.elements.length; i++) {
        postData.push(f.elements[i].name + "=" + f.elements[i].value);
    }
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "mypage.php", true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(postData.join("&"));
    
    document.forms.payPal.submit();
    
    0 讨论(0)
  • 2020-11-22 04:57

    If you have a regular submit button, you could add an onclick event to it that does the follow:

    document.getElementById('otherForm').submit();
    
    0 讨论(0)
  • 2020-11-22 04:57

    if you want to submit two forms with one button you need to do this:

    1- use setTimeout()

    2- allow show pop up

    <script>
    function myFunction() {
    setTimeout(function(){ document.getElementById("form1").submit();}, 3000);   
    setTimeout(function(){ document.getElementById("form2").submit();}, 6000);   
    }
    </script>
    <form  target="_blank" id="form1">
    <input type="text">
    <input type="submit">
    </form>
    <form target="_blank" id="form2">
    <input type="text">
    <input type="submit">
    </form>
    

    javascript doesn't submit two forms at the same time. we submit two forms with one button not at the same time but after secounds.

    edit: when we use this code, browser doesn't allow pop up.
    if you use this code for your software like me just set browser for show pop up but if you use it in designing site, browser is a barrier and code doesn't run.

    0 讨论(0)
提交回复
热议问题