2010-11-30 7 views
1

Ich habe eine Website (wie viele). Ich möchte zeigen aber deaktivieren Sie ein bestimmtes Formular basierend darauf, ob sie angemeldet sind oder nicht. Die Art, wie ich zeige, wenn der Benutzer eingeloggt ist, ist ein Cookie, der von PHP gesetzt wurde. Was ich frage mich ist die beste Möglichkeit, alle Elemente im Formular zu deaktivieren, wenn der Benutzer nicht angemeldet ist.Beste Möglichkeit, das gesamte Formular unter PHP-Bedingungen zu deaktivieren?

Die Lösung, die ich im Moment habe, ist, PHP zu echo einige JavaScript (jQuery um genau zu sein) zur Seite:

 
$("#form_name").children("input, textarea").attr("disabled", "disabled"); 

ist dies der richtige Weg zu gehen, oder gibt es einen besseren Weg, Dinge zu tun, zu sein?

+0

Sieht gut aus für mich. Wenn Sie zusätzliche Elemente haben (wählt/etc), können Sie sie einfach in Ihre Child-Funktion einfügen. Obwohl es eine Möglichkeit gibt, das gesamte Formular in jquery zu deaktivieren, das ich vielleicht nicht kenne – wajiw

+0

Sie sollten .find (..) anstelle von .children (..) verwenden, da letzteres nur direkte Kinder durchsucht – mikewasmike

Antwort

3

Wenn Sie den Cookie gesetzt haben, wenn PHP Ihre Seite generiert, setzen Sie einfach das deaktivierte Attribut auf das HTML-Element ohne Javascript. Wenn Sie über ein Ajaxy-Anmeldeformular verfügen, können Sie die Anmeldeantwort analysieren und das darauf basierende Formular aktivieren. Wenn der Login kein Ajaxy ist, sollte PHP den Cookie für Sie setzen und die Seite entsprechend aufbauen.

+0

Perfekt - danke! Ich wollte sicher sein, dass ich es richtig mache und nichts verpasst, das besser funktionieren würde. +1 für dich mein guter Mann; Danke für die schnelle Antwort :-) – Bojangles

+0

Danke! Um es klar zu sagen, Ihr ursprünglicher Ansatz beruht auf JS, aber ich würde es in den HTML-Code einfügen. ' deaktiviert > Es wird ein wenig ausführlicher sein, aber es funktioniert auch, wenn js deaktiviert ist. – jxpx777

+0

Hmm guten Punkt mit dem Mangel an JavaScript. Die Website, die ich entwickle, ist in erster Linie für Web-Entwickler gedacht, und im Jahr 2009 waren nur etwa 2,4% der Nutzer JS deaktiviert, was akzeptabel ist. (http://smorgasbork.com/component/content/article/84-a-study-of-internet-users-cookie-and-javascript-settings) – Bojangles

2

jQuery verwenden Sie können alle Eingaben, auswählen und Textelemente finden, die derzeit nicht deaktiviert werden, und deaktivieren Sie sich mit Hilfe der :enabled selector

$("#form_id").find("input:enabled, select:enabled, textarea:enabled").attr("disabled", "disabled"); 
+0

Ah Ich vermisste das 'select' Tag - danke! Da alle Elemente auf der Seite entweder deaktiviert oder aktiviert sind, spielt die Zeile ': enabled' keine Rolle, aber danke für die Aufmerksamkeit :-) – Bojangles

1

Wenn der Benutzer JavaScript nicht aktiviert hat dann natürlich diese Antwort : Das ist keine gute Idee.

Zweitens, nur mit deaktivierten Eingaben ist auch eine schlechte Idee, ein böswilliger Benutzer kann Ihre Seite zwicken und leicht wieder aktivieren.

Das sagte alles ist in Ordnung, solange Sie sicherstellen, dass die Felder, die Sie deaktiviert werden nicht auf dem Server-Seite Post akzeptiert werden.

+0

Guter Punkt, da JS deaktiviert ist ... as Zum Optimieren der Seite überprüft der Code, der bei der Übergabe des Formulars ausgeführt wird, ob der Benutzer trotzdem angemeldet ist. Das sollte sicher genug sein, denke ich. – Bojangles

Verwandte Themen