2012-04-02 16 views
0

Ich habe ein Formular, das ein paar verschiedene Submit-Buttons hat, alles verschiedene Dinge mit den gleichen Post-Daten zu tun.Formular nur dann in ein neues Fenster senden, wenn eine bestimmte Schaltfläche zum Senden gedrückt wird?

Lässt der Einfachheit halber sagen, dass die Form wie folgt aussieht:

<form method="post"> 
    <input type="hidden" name="ids" value="1,2,3,4" /> 
    <input type="submit" id="picking" name="picking" value="Picking" /> 
    <input type="submit" id="shipping" name="shipping" value="Shipping" /> 
    <input type="submit" id="invoice" name="invoice" value="Invoice" /> 
</form> 

Im Moment ist das Formular abschickt, um sich selbst und ich trainiere Server-Seite, die Absenden-Button gedrückt wird, eine URL aus den POST-Daten erstellen, dann mache eine PHP-Weiterleitung zu dem, was ich brauche. Das funktioniert gut.

Allerdings suche ich nach dem Formular, um seine Daten in einem neuen Fenster zu veröffentlichen, aber nur, wenn "Rechnung" angeklickt wird. Dies schließt das Hinzufügen von target="_blank" zum Formular aus, da die anderen beiden Schaltflächen auch auf neue Seiten übertragen werden.

Ich kann auch nicht das Formular in 3 verschiedene Formen aufteilen, da die Daten viel komplexer als die oben genannten sind, und eine Menge davon wird vom Benutzer eingegeben.

Gibt es eine Möglichkeit, dies mit JavaScript/JQuery zu tun? Wenn ja, wo würde ich anfangen?

Dank

+0

Wenn Sie dies im Auge mit Javascript Anforderung bauen, Ihre Form nutzlos sein wird, Leute, die Javascript deaktiviert haben. – Straseus

+0

Obwohl, wenn Sie es mit Javascript, auf dem onclick -Ereignis tun müssen - tun Sie ein 'form.setAttribute (" target "," _blank ");' vor dem Senden. – Straseus

+0

@Straseus abhängig von Javascript ist kein Problem. Es ist für etwas, das ich genau weiß, wer es verwenden wird, und so weiß, dass sie JS haben. – Nick

Antwort

4

konnte man nicht Ziel hinzufügen leer, um die Form, wenn Rechnung geklickt wird ?:

$("#invoice").click(function(){ 
    $('#form_id').attr('target', '_blank'); 
}); 

oder:

$(document).on("click","#invoice",function(){ 
     $('#form_id').attr('target', '_blank'); 
    }); 
+0

Danke, habe nicht daran gedacht! – Nick

0

Versuchen Sie, eine Click-Handler auf die richtige einreichen Hinzufügen Taste.

$('#invoice').on('click', function(){ 
    //doStuff 
}); 

Damit können Sie die Aktion von #Rechnung steuern, ohne die anderen zu beeinflussen.

+0

Es ist der ** doStuff ** Teil, den Ihre Antwort adressieren sollte. –

+0

+ 1'd Elens Antwort. :) – Joe

Verwandte Themen