Welcome, Guest. Please login or register.
Did you miss your activation email?
May 26, 2012, 04:55:46 AM

Login with username, password and session length
Search:     Advanced search
Wollen Sie dem WebsiteBaker Team beitreten?
Nähere Informationen finden Sie unter hier und auf unserer neuen Webseite.
155533 Posts in 21713 Topics by 7739 Members
Latest Member: audillino
* Home Help Search Login Register
Pages: [1]   Go Down
Print
Author Topic: [gelöst] Form-Modul - 2.8.1 mit Integration von onfocus/onblur  (Read 310 times)
AR1306

Offline Offline

Posts: 536



« on: February 27, 2010, 12:19:09 AM »

@all,

und wieder scheitere ich am geliebten PHP. Unter dem alten Form-Modul war es kein Ding OnBlur und OnFocus in Gang zu bringen, allerdings wurde die view.php doch ganz schön verändert, sodass eine Übernahme des Codes aus der älteren Version nicht funktioniert.

In der view.php Zeile 200 und 203 klappt es mit dem onfocus ganz gut.

Code:
$values[] = '<input onFocus="if(this.value==defaultValue)this.value=\' \';" type="text"  name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" class="textfield" />'; } elseif($field['type'] == 'textarea') {
$vars[] = '{FIELD}';
$values[] = '<textarea onFocus="if(this.value==defaultValue)this.value=\' \';" name="field'.$field_id.'" id="field'.$field_id.'" class="textarea" cols="25" rows="5">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>';

allerdings geht OnBlur überhaupt nicht ... entweder habe ich einen Denkfehler oder irgendwo steckt der Fehler wieder im Detail (Syntax)

Code:
"onblur=\"if(this.value=='') this.value='".$temp_element_value."'\"; onfocus=\"if(this.value=='".$temp_element_value."') this.value='';\" ";
... war der ältere Code der super funktonierte ...

Code:
'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'
ist wohl jetzt für
Code:
".$temp_element_value."
einzutragen? ... funktioniert aber net ...

Andreas
« Last Edit: February 27, 2010, 05:21:11 PM by AR1306 » Logged
AR1306

Offline Offline

Posts: 536



« Reply #1 on: February 27, 2010, 05:19:54 PM »

@all,
wen es interessiert - es funktioniert und hat einen tollen Nebeneffekt - ein ausgefülltes Formular muss nicht erneut ausgefüllt werden, wenn man mal einen als notwendig gekennzeicheten Punkt vergessen hat auszufüllen ... und es funktioniert sogar mit <textarea>  grin

Die view.php im Ordner Form (unter Modules) muss etwas ergänzt werden. Die entscheidenden Einträge erfolgen in Zeile 200 und 203. Mein "Problem" bestand wieder einmal in der korrekten Syntax, der Quelltext hat mir dann allerdings den Weg gezeigt ... wichtig war in diesem Fall der zweite ' (Apostroph) am Anfang und am Ende von this.value=\''...'\' wobei der erste und der letzte maskiert werden mußten ... kleine Ursache mit entscheidender, großer Wirkung ... ist aber nun gelöst - wenn es keine Bedenken bezüglich Validität geben, wäre es nicht schlecht, wenn es den Weg in die offizielle Version findet.

Also aus dem folgenden Originalcode:
Code:
<?php
$values
[] = '<input type="text" name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" class="textfield" />';
} elseif($field['type'] == 'textarea') {
$vars[] = '{FIELD}';
$values[] = '<textarea name="field'.$field_id.'" id="field'.$field_id.'" class="textarea" cols="25" rows="5">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>';
?>

sollte dann dieser Code werden:
Code:
<?php
$values
[] = '<input type="text"  name="field'.$field_id.'" id="field'.$field_id.'" maxlength="'.$field['extra'].'" value="'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'" onfocus="if(this.value==defaultValue)this.value=\'\';"  onblur="if(this.value==\'\')this.value=\''.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'\'" class="textfield" />';
} elseif($field['type'] == 'textarea') {
$vars[] = '{FIELD}';
$values[] = '<textarea  id="field'.$field_id.'" onfocus="if(this.value==defaultValue)this.value=\'\';" name="field'.$field_id.'" onblur="if(this.value==\'\')this.value=\''.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'\'" class="textarea" cols="25" rows="5">'.(isset($_SESSION['field'.$field_id])?$_SESSION['field'.$field_id]:$value).'</textarea>';
?>

Vielleicht noch eine Frage - Wo finde ich die CSS-Definitionen für das Auswahlfeld (Dropdown) und das Captcha-Eingabefeld?

Vielen Dank!

ANDREAS
« Last Edit: February 27, 2010, 05:21:29 PM by AR1306 » Logged
AR1306

Offline Offline

Posts: 536



« Reply #2 on: February 27, 2010, 07:28:45 PM »

Mhh, Auswahlfeld wird über class="select" gesteuert, aber wo finde ich die Möglichkeit dem "Prüfziffereingabefeld" eine Klasse zuzuweisen. Über die view.php des Form-Modules funktioniert es nicht. Im include/captcha Bereich finde ich auch keine Möglichkeit - Wäre wichtig bezüglich Barrierefreiheit ... Jemand eine Idee?

Danke!

Andreas
« Last Edit: February 27, 2010, 08:02:13 PM by AR1306 » Logged
AR1306

Offline Offline

Posts: 536



« Reply #3 on: February 27, 2010, 09:52:50 PM »

... um das hier abzuschließen ... es geht über die captcha.php ... dort unter "calculation with text" in Zeile 151 die Klasse hinzufügen:

Code:
<?php
<td><input type="text" name="captcha" maxlength="10"  style="width:20px;" class="captcha" /></td>
?>

und in der frontend.css eine .captcha Klasse mit den entsprechenden Angabe hinzufügen.
« Last Edit: February 27, 2010, 10:03:01 PM by AR1306 » Logged
Pages: [1]   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!