<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kau-Boys blog &#187; jQuery</title>
	<atom:link href="http://kau-boys.de/tag/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://kau-boys.de</link>
	<description>Webdevelopment and more</description>
	<lastBuildDate>Sun, 22 Jan 2012 17:33:25 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Formular-Vorschau mit jQuery Thickbox</title>
		<link>http://kau-boys.de/137/webentwicklung/formular-vorschau-mit-jquery-thickbox?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=formular-vorschau-mit-jquery-thickbox</link>
		<comments>http://kau-boys.de/137/webentwicklung/formular-vorschau-mit-jquery-thickbox#comments</comments>
		<pubDate>Thu, 20 Aug 2009 14:46:37 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=137</guid>
		<description><![CDATA[Für eines meiner Projekte habe ich eine kleine einfache Formular-Vorschau implementiert. Da ich mit dem Ergebnis und der Einfachheit sehr zufrieden bin, möchte ich das Ergebnis hier kurz vorstellen. Die Vorschau-Funktion nutzt das jQuery Framework und dessen Plugin Thickbox. Der Einsatz von Thickbox stellt aber nur eine Möglichkeit dar, die Vorschau umzusetzen. Im Grunde ist [...]]]></description>
			<content:encoded><![CDATA[<p>Für eines meiner Projekte habe ich eine kleine einfache Formular-Vorschau implementiert. Da ich mit dem Ergebnis und der Einfachheit sehr zufrieden bin, möchte ich das Ergebnis hier kurz vorstellen.</p>
<p>Die Vorschau-Funktion nutzt das jQuery Framework und dessen Plugin Thickbox. Der Einsatz von Thickbox stellt aber nur eine Möglichkeit dar, die Vorschau umzusetzen. Im Grunde ist der Aufbau recht simpel. Die JavaScript Funktion setzt das Target und das Action Attribut des Formulars und sendet die Daten an das unter Target angegebene Ziel. Das kann ein neuer Tab sein, oder aber ein iFrame, der wie in dem Beispiel beschrieben in der Thickbox angezeigt wird.</p>
<p><span id="more-137"></span></p>
<p>Zur Demonstration habe ich kleines E-Mail-Formular erstellt. Vor dem Absenden kann der Benutzer die zu versendende Mail ansehen. Ich setze die Funktion in einem Loginbereich für ein sehr viel komplexeres Formular ein und verwende für die Vorschau-Funktion auch das Skript, über das die Daten später dem Benutzer ausgegeben werden. Die Vorgehensweise ist aber von der Art und dem Umfang des Formulars unabhängig.</p>
<p><img class="aligncenter" title="screenshot of mail form" src="http://kau-boys.de/wp-content/uploads/2009/08/form.png" alt="screenshot of mail form" /><br />
So sieht das kleine Mailformular aus. Natürlich könnte man es noch um die Felder für den Absender und dessen E-Mail-Adresse erweitern, aber es dient wie gesagt nur als Demonstration.</p>
<p>Die einzige Anforderung an das Formular selbst ist eine ID, damit es über die Javascript-Funktion aufgerufen werden kann. Anschließend muss ein Button für die Vorschau eingefügt werden. Dieser sollte am besten ausgeblendet werden, wenn der Nutzer kein JavaScript aktiviert hat.</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">
&lt;input type=&quot;button&quot; value=&quot;Preview&quot; id=&quot;previewbutton&quot; class=&quot;thickbox&quot; alt=&quot;#TB_inline?width=400&amp;height=250&amp;inlineId=mailpreview&amp;modal=true&quot; /&gt;
</pre>
<p>Das Attribut alt enthält die <a href="http://jquery.com/demo/thickbox/#container-4">Parameter für die Thickbox</a>. Zusätzlich muss die CSS-Klasse thickbox zugewiesen werden, um bei einem Klick auf den Button die Thickbox zu aktivieren. Das ID Attribut wird für den Aufruf der JavaScript Funktion durch die click() Funktion von jQuery benötigt. Hier ist natürlich auch ein inline Attribut wie onmousedown möglich, aber das wäre nicht sehr jQuery-Style.</p>
<p>Anschließend aktivieren wir den Eventhandler für den Button zum Aufruf der Vorschau-Funktion:</p>
<pre class="brush: jscript; gutter: false; title: ; notranslate">
$('#previewbutton').click(function(){
	formPreview('mailsend', 'mailpreview.php', 'mailpreviewiframe');
});
</pre>
<p>Der erste Parameter der Funktion steht für die ID des Formular, der zweite für die Seite, die zur Anzeige der Vorschau verwendet wird. Der dritte für das Zeil. Das Ziel kann ein neues Fenster sein, oder aber wie in unserem Fall ein iFrame, der wie folgt an einer beliebigen Stelle im Quelltext definiert wird:</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">
&lt;div id=&quot;mailpreview&quot; style=&quot;display: none;&quot;&gt;
	&lt;iframe name=&quot;mailpreviewiframe&quot; style=&quot;border: 0; width: 400px; height: 245px;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</pre>
<p>Der Frame steckt in einem DIV, welches ausgeblendet wird. Die ID des DIVs wird für die Thickbox-Parameter verwendet.</p>
<p>Was geschiet nun bei einem Klick auf den Vorschau-Button? Zuerst wird die Thickbox-Funktion ausgeführt und das DIV in die Thickbox verschoben. Mit einer kleinen Verzögerung wird dann der Inhalt des Formulars an den iFrame gesendet, indem das Traget Attribut des Formulars ausgenutzt wird. Um zum Anzeigen der Vorschau eine andere Seite als beim Speichern zu verwenden wird außerdem vor dem Absenden das Action Attribut ausgetauscht und direkt nach dem Absenden wieder auf seinen Ursprungszustand zurückgesetzt.</p>
<p><img class="aligncenter" title="screenshot of mail preview" src="http://kau-boys.de/wp-content/uploads/2009/08/preview.png" alt="screenshot of mail preview" /></p>
<p>Da die Vorschau unter Verwendung des späteren Ausgabeseite geschiet, entspricht die Darstellung sehr genau dem späteren Ergebnis. Dazu sollten dann eventuell Daten aus der Datenbank nachgeladen werden oder Werte entsprechend des Speicheralgorithmus verändert werden. Bei komplexen Formularen kann es auch sinnvoll sein, die Daten über die reguläre Speicherfunktion in eine temporäre Tabelle zu speichern, um sie direkt wieder auszulesen. In meinem Projekt lade ich beispielsweise Daten für die ausgewählten SELECT Felder nach und wende die Datenbank-Escape-Funktionen an. Danach füge ich alles zu einer Datenstruktur zusammen, die so auch aus der Datenbank ausgelesen wird und gebe sie mit der Ausgabeseite aus.</p>
<p>Ich hoffe dieses kleine Beispiel zeigt euch, mit welch einfachen Mitteln man eine kleine Vorschau-Funktion umsetzen kann, ohne dabei auf Techniken wie AJAX angewiesen zu sein. Wer auf die Thickbox und jQuery verzichten will, muss lediglich einen inline Eventhandler verwenden und als Target beipsielsweise &#8220;_blank&#8221; angeben, um die Vorschau in einem neuen Tab/Fenster zu öffnen.</p>
<pre class="brush: xml; gutter: false; title: ; notranslate">
&lt;input type=&quot;button&quot; value=&quot;Preview&quot; onclick=&quot;formPreview('mailsend', 'mailpreview.php', '_blank');&quot; /&gt;
</pre>
<p>Das Formular kann gerne hier ausprobiert werden. Und keine Angst, es wird dabei in keinem Fall eine Mail versendet! Wer den Quellcode haben möchte, kann ihn auch gerne hier downloaden. </p>
<p class="aligncenter">
<a href="http://kau-boys.de/beispiele/formpreview/form.php" class="awesome large breakerbay">Beispiel</a> <a href="http://kau-boys.de/beispiele/formpreview/formpreview.zip" class="awesome large breakerbay" style="margin-left:20px;">Download</a>
</p>
<p>Noch ein Wort zum Formular-Design. Da ich nicht gerade die Geduld und die Begabung für schöne Formular habe, wurde für das Beispiel das <a href="http://www.emblematiq.com/lab/niceforms/">Niceform 2.0</a> verwendet. Dieses ist zwar auf JavaScript angewiesen und ersetzt vergebene Klassen, aber ich konnte ohne viel Aufwand schöne Formulare für das Beispiel erzeugen.</p>
<p><strong>Noch ein kleiner Bonustipp:</strong> Für Funktionen, die zwingend JavaScript erfodern, sollten diese ausgeblendet werden, wenn der Nutzer kein JavaScript aktiviert hat. Dazu einfach eine CSS-Klasse für solche Elemente verwenden und diese per &#8220;display: none&#8221; ausblenden. Im Kopfbereich kann dann mit &#8220;document.write()&#8221; oder den Funktionen der JavaScript-Frameworks die &#8220;display&#8221; Eigenschaft der CSS-Klasse wieder überschrieben werden. Somit erspart man dem Nutzer ohne JavaScript die unnötigen Klicks und in diesem Beispiel ein versehentliches Absenden, da viele Browser bei deaktiviertem JavaScript alle Buttons automatisch wie Submit-Buttons interpretiert.</p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/137/webentwicklung/formular-vorschau-mit-jquery-thickbox/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Kau-Boy&#8217;s AutoCompleter Plugin</title>
		<link>http://kau-boys.de/24/wordpress/kau-boys-autocompleter-plugin?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kau-boys-autocompleter-plugin</link>
		<comments>http://kau-boys.de/24/wordpress/kau-boys-autocompleter-plugin#comments</comments>
		<pubDate>Thu, 02 Jul 2009 16:11:34 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=24</guid>
		<description><![CDATA[Dieses Plugin verwendet den Ajax.Autocompleter von script.aculo.us bzw. die jQuery Autocomplete Funktoin um Beiträge zu finden, die den Suchbegriff im Titel oder Inhaltstext enthalten. Der eingegebene Text kann in den Titel der Beiträge und/oder im Inhalt gesucht werden. Es kann zusätzlich die Formatierung der Ergebnisse über eine eigene CSS Datei an den Blog angepasst werden. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codex.wordpress.org/AJAX_in_Plugins"></a><a href="http://codex.wordpress.org/AJAX_in_Plugins"></a>Dieses Plugin verwendet den Ajax.Autocompleter von script.aculo.us bzw. die jQuery Autocomplete Funktoin um Beiträge zu finden, die den Suchbegriff im Titel oder Inhaltstext enthalten.</p>
<p>Der eingegebene Text kann in den Titel der Beiträge und/oder im Inhalt gesucht werden. Es kann zusätzlich die Formatierung der Ergebnisse über eine eigene CSS Datei an den Blog angepasst werden. Es kann jeweils der Titel oder zusätzlich ein Teil des Inhalts angegeben werden, wobei hier auch die Länge des auszugebenden Inhaltes eingestellt werden kann.</p>
<p><span id="more-24"></span></p>
<h2>Installation:</h2>
<h3>Installation über die WordPress Adminstrator-Seiten:</h3>
<ol>
<li>Gehe zur Admin-Seite <code>Plugins -&gt; Installieren</code></li>
<li>Suche nach <code>kau-boy</code> und wähle das Plugin aus</li>
<li>Wähle die Aktion <code>Jetzt installieren</code></li>
<li>Klicke auf <code>Jetzt installieren</code></li>
<li>Aktiviere das Plugin über den <code>Plugins</code> Menüpunkt in WordPress</li>
<li>Du musst eventuell die Einstellungen anpassen, gerade wenn dein Suchfeld eine andere ID als <code>s</code> hat</li>
</ol>
<h3>Installation unter Verwendung der WordPress Adminstrator-Seiten:</h3>
<ol>
<li>Lade die zip-Datei des Plugins herunter: <a href="http://downloads.wordpress.org/plugin/kau-boys-autocompleter.zip">kau-boys-autocompleter.zip</a></li>
<li>Gehe zur Admin-Seite <code>Plugins -&gt; Installieren</code></li>
<li>Wähle den Link <code>Hochladen</code> unter <code>Plugins Installieren</code> Überschrift</li>
<li>Wähle die zip-Datei aus und klicke <code>Jetzt installieren</code></li>
<li>Aktiviere das Plugin über den <code>Plugins</code> Menüpunkt in WordPress</li>
<li>Du musst eventuell die Einstellungen anpassen, gerade wenn dein Suchfeld eine andere ID als <code>s</code> hat</li>
</ol>
<h3>Installation unter Verwendung von FTP</h3>
<ol>
<li>Lade die zip-Datei des Plugins herunter: <a href="http://downloads.wordpress.org/plugin/kau-boys-autocompleter.zip">kau-boys-autocompleter.zip</a></li>
<li>Entpacke es und lade es in dein <code>/wp-content/plugins/</code> Verzeichnis hoch</li>
<li>Aktiviere das Plugin über den <code>Plugins</code> Menüpunkt in WordPress</li>
<li>Du musst eventuell die Einstellungen anpassen, gerade wenn dein Suchfeld eine andere ID als <code>s</code> hat</li>
</ol>
<h2>Screenshots:</h2>
<h3>Screenshot des Plugins in einem neuen WordPress blog</h3>
<p><img title="Screenshot des Plugins in einem neuen WordPress blog" src="http://kau-boys.de/wp-content/uploads/2009/08/screenshot-1.png" alt="Screenshot des Plugins" /></p>
<h3>Screenshot der Einstellungsseite (auch in englisch erhältlich)</h3>
<p><img title="Screenshot der Einstellungsseite (auch in englisch erhältlich)" src="http://kau-boys.de/wp-content/uploads/2009/08/screenshot-2-de.png" alt="Screenshot der Einstellungsseite" /></p>
<h2>Versionsgeschichte:</h2>
<ul>
<li><strong>3.1.2</strong> Zurücksetzen der vorherigen Änderungen, da sie das Problem nicht lösen sondern es eher auslösen</li>
<li><strong>3.1.1</strong> Ersetzen von appendTo() mit prependTo() im jquery.autocompleter plugin zum beheben von Überlagerungs-Problemen</li>
<li><strong>3.1</strong> Ausblenden von PHP Warnungen, wenn WP_DEBUG inaktiv ist und Einfügen des Ergebnis-DIV in den Kopf des BODY Tag</li>
<li><strong>3.0.4</strong> Beheben eines Tippfehlers in der jQuery URL</li>
<li><strong>3.0.3</strong> Beheben eines Tippfehlers im jQuery-Selektor</li>
<li><strong>3.0.2</strong> Retag als 3.0.2 aufgrund eines Deploment-Fehlers im Respository</li>
<li><strong>3.0.1</strong> Schneller bugfix für Prototype CSS und JavaScript</li>
<li><strong>3.0</strong> Einsatz von AJAX, so wie es hier beschrieben wird: <a href="http://codex.wordpress.org/AJAX_in_Plugins">http://codex.wordpress.org/AJAX_in_Plugins</a></li>
<li><strong>2.5</strong> Anpassen das Plugin an WordPress Installationen, bei denen die wp-config.php eine Orderebene über dem ROOT Verzeichnis liegt.</li>
<li><strong>2.4</strong> Fehler mit html Entitäten im Filter beheben</li>
<li><strong>2.3</strong> Fehler des JavaScript in IE8 in Verbindung mit Prototype beheben</li>
<li><strong>2.2</strong> Deaktivieren der Suche für Suchfelder im Adminbereich und Ermöglichen der Verwendung zusammen mit dem relevanssi Plugin</li>
<li><strong>2.1</strong> Hinzufügen einer neuen Version von jQuery Autocomplete</li>
<li><strong>2.0.1</strong> Entfernen von &#8220;short open tags&#8221;, die auf blogs die Fehler verursachen die &#8220;short_open_tag&#8221; nicht auf &#8220;On&#8221; gesetzt haben</li>
<li><strong>2.0</strong> Autocompleter mit mehreren Textfelder auf einer Seite nutzbar machen, verbessern der Kürzung des Inhalt von Artikeln</li>
<li><strong>1.9</strong> Beheben von Problemen mit PHP4, funktioniert nun auch mit qTranslate im &#8220;Query-Modus&#8221; (?lang=de)</li>
<li><strong>1.8</strong> Hinzufügen der Einstellung für die Länge des Titels und des Inhalts in den Ergebnissen</li>
<li><strong>1.7</strong> Erstzen von jQuery suggest durch jQuery autocomplete, da das suggest Plugin HTML Auszeichnungen zerstört</li>
<li><strong>1.6.1</strong> Verwendung des id Attributs als Standard anstelle des name Attributs</li>
<li><strong>1.6</strong> Hinzufügen der Möglichkeit das Suchfeldes anhand des name Atrrbiuts auszuwählen</li>
<li><strong>1.5.2</strong> Hinzufügen der richtigen Kodierung zu <code>html_entity_decode()</code> um das Zerteilen von XML Enitäten zu verhindern</li>
<li><strong>1.5.1</strong> Fehler im AJAX repsonse behoben, der die Einstellung für die Ergebnisfelder nicht geladen hat</li>
<li><strong>1.5</strong> Hinzufügen Auswahlmöglichkeiten für die Such- und Ergebnisfelder</li>
<li><strong>1.4.1</strong> Aktualisierung der Übersetzungsdatei</li>
<li><strong>1.4</strong> Kombinieren der Styles für jQuery und script.aculo.us, Hinzufügen  einer Einstellung zur Multibyte-Kodierung</li>
<li><strong>1.3.5</strong> Fehler bei der <code>html_entity_decode()</code> Konvertierung beseitigt</li>
<li><strong>1.3</strong> Enfternen eines Kommentars in autocompleter.js.php, welcher eine PHP header warning  erzeugt hat</li>
<li><strong>1.2</strong> Verwendung von <code>html_entity_decode()</code> um das Zerteilen von Enitäten zu verhindern</li>
<li><strong>1.1</strong> Entfernen von WordPress shortcodes um leere oder falsche Seiten zu verhindern</li>
<li><strong>1.0</strong> Möglichkeit jQuery ODER script.aculo.us zu verwenden, Übersetzen der Einstellungsseite ins Deutsche</li>
<li><strong>0.4</strong> Hinzufügen der Einstellung für die Anzahl der Suchergebnisse und der eigenen CSS Date</li>
<li><strong>0.3</strong> Hinzufügen der Einstellung für die Suchfeld ID</li>
<li><strong>0.2</strong> Erste stabile Version</li>
</ul>
<p>Wenn dir dieses Plugin gefällt oder dir etwas fehlt, würde ich mich freuen es zu erfahren. Hinterlasse einfach ein Kommentar auf dieser Seiter oder auf meiner <a href="http://wordpress.org/tags/kau-boys-autocompleter">WordPress Plugin Seite</a>.</p>
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=6104701"><img style="border: 0pt none ;" src="http://kau-boys.de/wp-content/uploads/2009/07/btn_donate_LG_en_US.gif" alt="PayPal - The safer, easier way to pay online!" /></a> <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=6104638"><img style="border: 0pt none ;" src="http://kau-boys.de/wp-content/uploads/2009/07/btn_donate_LG_de_DE.gif" alt="PayPal - The safer, easier way to pay online!" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/24/wordpress/kau-boys-autocompleter-plugin/feed</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
	</channel>
</rss>

