javascript
  • php
  • html
  • forms
  • 2016-07-28 6 views 1 likes 
    1

    Ich möchte ein Formular mit einem href-Tag senden und laden Sie das übermittelte Formular in einem Pop-up.senden Sie ein Formular und öffnen Sie es in einem Popup mit einem href-Tag

    <form method='post' action='" . $paymentURL . "' id='frmPaymentDtl' onsubmit='target_popup(this)'> 
        <a id=\"submit_full_payment\" onclick=\"target_popup(get_form(this).submit())\">Make Full Payment</a> 
        <input type='hidden' name='customer_id' value='" . $customer_id . "'/> 
        <input type='hidden' name='account_id' value='" . $account_id . "'/> 
        <input type='hidden' name='invoice_number' value='" . $invoice_model[0]->number . "'/> 
        <input type='hidden' name='detail_id' value='" . $bean->id . "'/> 
        <input type='hidden' name='header_id' value='" . $_GET['record'] . "'/> 
        <input type='hidden' name='detail_number' value='" . $bean->detail_id . "'/> 
        <input type='hidden' name='amount' value='" . number_format($bean->amount,2) . "'/> 
        <input type='hidden' name='description' value='" . $paymentSchedule->description . "'/> 
        <input type='hidden' name='invoice_id' value='" . $invoice_model[0]->id . "'/> 
        <input type='submit' name='submit_btn' class=\"listViewTdToolsS1\" value='Submit Bank/Credit Payment'/> 
    </form> 
    <script type='text/javascript'> 
        function get_form(element) 
        { 
        while(element) 
        { 
         element = element.parentNode 
         if(element.tagName.toLowerCase() == \"form\") 
         { 
         //alert(element) //debug/test 
         return element 
         } 
        } 
        return 0; //error: no form found in ancestors 
        } 
    
        function target_popup(form) { 
        window.open('', 'formpopup', 'width=800,height=600,resizeable,scrollbars'); 
        form.target = 'formpopup'; 
        } 
    </script> 
    

    Was hier passiert, ist, dass das Pop-up angezeigt wird, aber das Formular auf der Haupt-Seite geladen wird, wenn ich es in der Pop-up-Seite geladen werden soll. Außerdem kann ich Link hier nur verwenden, um auf das Formular zuzugreifen, da die Übermittlungsschaltflächen nicht zulässig sind.

    Antwort

    1

    Sie reichen das Formular ein und dann übergibt den Rückgabewert des Aufrufs submit() an target_popup().

    Sie müssen erste Anruf target_popup() und übergeben sie die Form, dann Sie das Formular einreichen.

    onclick="var frm = get_form(this); target_popup(frm); frm.submit()"> 
    

    Das heißt, würden Sie einen regelmäßigen Absenden-Button werden besser mit und CSS anwenden, um es, wie Sie wollen aussehen zu lassen.

    -1

    Sie müssen Ajax verwenden. Hier ist die Liste, was Sie tun müssen:

    1. Stop-Formulars einreichen Ereignis
    2. senden Daten mit Ajax und dann Erfolg

    Tun Sie, was immer Sie wollen Ajax (die Sie e.preventDefault(); verwenden können) oder Fehler Rückrufe ..

    Bitte lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen :)

    diese meine Antwort war und ich bekomme eine Minen für diese so le t ich erkläre es ..

    1-) Sie müssen nicht window.open() für eine Pop-up-Seite verwenden. Sie können einfach ein Modal (das ein Bootstrap-Element ist: http://getbootstrap.com/javascript/#modals) erstellen und das, was Sie wollen, modal anzeigen lassen. Was in Ihrem Fall wird es wieder Ihr Formularelement sein, wenn ich Ihre Frage richtig verstehe.

    2-) Wenn Sie Seite wollen die reload stoppen auf diese Anwendung einreichen:

    $('#frmPaymentDtl').submit(function(e) 
        { 
         e.preventDefault(); 
         //Take form's all data with this 
         var data = $('#frmPaymentDtl').serialize(); 
         //Or you can assign all id's to a new variable if you'd like that way. 
         //After this open your modal which you have a form inside that. 
         //then write all data into input's from "data" variable. 
        }); 
    

    Ich weiß, das ein bisschen anders ist, aber ich weiß, dass dies auch für Sie arbeiten.

    Eine weitere Sache. Wenn Sie diese Variable "data" an eine andere Seite senden möchten, müssen Sie Ajax verwenden.

    Wenn Sie wissen nicht, wie dies überprüfen: jQuery AJAX submit form

    Oww durch die Art und Weise, wenn Sie meine Art und Weise zu verwenden, versuchen Sie bitte Ihre Form der Onclick-Ereignis löschen. :)

    +0

    Das OP möchte das Ergebnis in einem neuen Fenster rendern. "Mach, was immer du willst" ist ziemlich vage und erklärt nicht, wie das Ergebnis in einem neuen Fenster angezeigt wird, in dem alle URLs korrekt aufgelöst werden. – Quentin

    -1

    Ajax-Code Details einreichen und Ergebnis:

    <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
    $('#submit_full_payment').click(function() { 
        var url = 'YOUR_URL'; 
        $.ajax({ 
         type: 'POST', 
         url: url,//url to post data 
         data: "customer_id=" + $('name=customer_id').val() + "&account_id=" + $('name=account_id').val(),//add other form fields here 
         success: function (data) {//process data here 
          alert(data); 
         }, 
         error: function (data) { 
         alert(data); 
         } 
        }); 
    }); 
    

    Schritt 2: Verwenden Sie den Dialog, die Form und Link angezeigt werden soll. Reference link Dies wird das Formular auf der Hauptseite ausblenden und Ajax wie oben angegeben verwenden, um das Formular zu bearbeiten und nur im Popup-Fenster zu behalten. Wenn Sie nicht im Pop-up bleiben wollen, können Sie den Schritt ignorieren.

    +0

    Dies zeigt das Ergebnis in einer Warnung, nicht in einem neuen Fenster. – Quentin

    +0

    Re edit: Ein jQuery-Dialog ist kein neues Fenster – Quentin

    Verwandte Themen