Aufruf der JS-Funktion auf Formular Absenden
Habe ich eine JS-Funktion, die ausgeführt wird, gut, wenn es enthalten ist ein 'onclick' - Aktion der standard-HTML-link-tag wie folgt:
<a href="#" onclick="return fb_CheckPermission('publish_stream');">test</a>
Doch, wo ich wirklich wollen, um diese Funktion zu verwenden ist, auf das 'onsubmit' action eines Formulars, aber wenn ich es wie folgt die Funktion scheint nicht mehr ausgeführt werden:
<form action="page.pl" id="disable-submit" name="status-form" method="POST" onsubmit="return fb_CheckPermission('publish_stream');">
Was die 'fb_CheckPermission()' JS-Funktion im Grunde tut, ist, verwenden Sie Facebook Connect, um zu überprüfen, ob der Benutzer erteilt uns eine ausdrückliche Erlaubnis und wenn er es nicht sagt Facebook Verbinden, um den Benutzer aufzufordern, eine Berechtigung. Hier ist der code der JS-Funktion:
1. function fb_checkPermission(permission) {
2. FB.ensureInit(function() {
3. FB.Facebook.apiClient.users_hasAppPermission(permission, function (hasPermissions) {
4. if(!hasPermissions){
5. FB.Connect.showPermissionDialog(permission,function (status){
6. if(!status) {
7. if(permission == 'offline_access') {
8. //save session
9. }
10. }
11. });
12. }
13. });
14. });
15.}
Was dieser code tut, ist wie folgt:
Line 2: Make sure Facebook Connect JS library is loaded
Line 3: Checks to see if the current Facebook Connect user has granted a specific permission
Line 5: If the permission hasn't been granted then prompt the user with the permission dialog
Line 7: In the case of the 'offline_access' permission save the session key once granted
Den Benutzer Erfahrung, die ich versuche zu erreichen, dass, wenn ein Benutzer das Formular sendet, ich werde überprüfen, um zu sehen, ob Sie erteilt haben, eine spezielle Erlaubnis, und wenn Sie nicht auffordern, für die die Genehmigung vor dem Absenden des Formulars. Wenn der Benutzer bereits gewährte die Erlaubnis, sollte das Formular nur Absenden. Für diejenigen Nutzer, die aufgefordert werden, sollte das Formular abschicken, nachdem Sie entweder wählen, erteilen Sie die Erlaubnis, oder wenn Sie das leugnen, die Anfrage, die ich glaube, die fb_checkPermission() JS-Funktion ist die Handhabung richtig jetzt. Was ich nicht sicher bin, ist, wenn es irgendeine Art von JavaScript Problem mit, wie das funktioniert auf dem Formular-übermittlung.
Als ich erwähnte, diese JS-Funktion funktioniert perfekt wie eine onclick-Aktion aber nicht als "onsubmit" - Aktion also ich bin mir ziemlich sicher, dass dies etwas damit zu tun, wie JavaScript behandelt onsubmit-Aktionen.
Ich bin stecken, damit ich wirklich zu schätzen Ihre Hilfe in herauszufinden, wie man ändern Sie die JS-Funktion zum erzeugen von mir gewünschten user experience. Vielen Dank im Voraus für Eure Hilfe!
InformationsquelleAutor Russell C. | 2010-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Grund Ihrer "klicken Sie auf "Anker" funktioniert, weil es ändert nicht Ihre Seite (Lage), während alle von der Facebook asynchrone Aufrufe fertig stellen.
Beim anfügen der gleichen Funktion den submit-handler die Funktion zurückkehrt, bevor Facebook Zeug wird tatsächlich ausgeführt, und es funktioniert ohne Rückgabe "false" bewirkt, dass die form zu gehen mit der Einreichung früher, als Sie möchten.
Was Sie tun müssen, ist die Rückgabe "false" am Ende der onSubmit-Funktion zu verhindern, dass die Einreichung und Zeit geben, um Facebook-Kram zu beenden und dann manuell senden Sie das Formular an Orten, die Sie wollen, dass es vorgelegt werden, durch aufrufen von:
(Der handler wird nicht aufgerufen werden, wenn submittion ausgelöst wird aus dem Skript.)
Leider habe ich keine Facebook-SDK zur hand, so kann ich nicht schreiben den code, ich bin mir sicher, dass 100% ig funktioniert, aber es ist etwas entlang diesen Linien:
Eine Sache in den Sinn kommt: Es ist möglich, dass es ein Fehler irgendwo in deinem code. Das würde auch das Skript beendet und erlauben, die Vorlage zu gehen. Wenn du mit Firefox/Firebug, legte "Konsole.log('...')" unmittelbar vor "return false" um zu sehen, ob es tatsächlich läuft bis zur return-Anweisung.
gute minds think alike. Im wesentlichen habe ich beschlossen, zu bauen, die die Funktion von Grund auf wieder mit alert-Anweisungen nach jedem neuen element, um herauszufinden, die um Dinge feuerten und wo Probleme auftreten. Ich dachte, ich hätte das Problem gelöst, aber dann scheint es zu scheitern, auf ein paar unserer Formulare. Ihr Vorschlag, auf jeden Fall schickte mich in die richtige Richtung, so vielen Dank für die Hilfe!
Ich dachte nur die Lösung. Es sieht aus wie ich den Namen der Schaltfläche "senden" auf einigen meiner Formulare "Absenden", die die JS nicht verarbeiten die submit () - Aktion. Schließlich fand ich die Lösung hier: beutelevision.com/blog2/2009/09/15/...
InformationsquelleAutor Marko Dumic
Versuchen Sie den javascript-Aufruf auf die Eingabe, die Sie verwenden, um zu initiieren, die sich Unterwerfen.
Ja. In meinen tests, wenn der Benutzer trifft die Rückkehr von einem der Felder, die, sollten Sie javascript immer noch Feuer.
Nach der Lektüre Marco ' s Antwort, ich bin damit einverstanden, dass Ihr problem ist nicht, ob das javascript aufgerufen wird, ist aber die Tatsache, dass Sie nicht sofort wissen, das Ergebnis.
InformationsquelleAutor pattersonc
Ich denke im Grunde, dass Ihr browser neigt dazu, verwenden Sie die Standard-Validierung-Formular - (page.pl /Methode POST) anstatt das zu tun, was Sie denken, es tut
Versuchen Sie, diese
InformationsquelleAutor Darkyo