Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[JavaScript] color picker per popup für viele felder... HILFE!!!! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[JavaScript] color picker per popup für viele felder... HILFE!!!!


 
Jaws
02-03-2004, 22:17 
 
In PHP und HTML kann ich ja miterweile einiges machen, in JavaScript kenn ich mich jedoch nicht sooo gut aus...

jetzt brauch ich für ein proejkt, wo der benutezr, diverse farben wählen kann, die dann gespeichert werden, einen Colorpicker....

Also hab ich mir n paar scripts zusammengebastelt.... *hehe*

erstmal hab ich die Color-Tabelle vom WYSIWYG-HTML-Area geklaut, und n paar zeieln verändert...

aber erstmal der code von der datei, mit der ich das popup öffne...


<script language="JavaScript">
function color(){
var popup = open('select_color.php', 'color', 'width=231 ,height=162');
}

function insert(selectedcolor){
document.demo.test.value += selectedcolor;
}
</script>
</head>

<body>
<form name="demo">
<textarea name="test"></textarea>
<a href="#" onclick="color(); return false">Farbe wählen</a>
</form>
</body>


html und head-tags hab ich da jetzt einfach mal weggelassen...


und das hier wäre das script des color-pickers, inclusive der ersten tabellen-zeiel mit den farben drinne...

<html STYLE="width: 238px; height: 187px"><head><title>Select Color</title>
<script language="javascript">

function _CloseOnEsc() {
if (event.keyCode == 27) { window.close(); return; }
}

function Init() { // run on page load
document.body.onkeypress = _CloseOnEsc;

color = window.dialogArguments;
color = ValidateColor(color) || '000000';
View(color); // set default color
}

function View(color) { // preview color
document.all.ColorPreview.style.backgroundColor = '#' + color;
document.all.ColorHex.value = '#' + color;
}

function Set(string) { // select color
color = ValidateColor(string);
if (color == null) { alert("Invalid color code: " + string); } // invalid color
else { // valid color
View(color); // show selected color
opener.insert(document.all.ColorHex.value); // set return value
window.close(); // close dialog
}
}

function ValidateColor(string) { // return valid color code
string = string || '';
string = string + "";
string = string.toUpperCase();
chars = '0123456789ABCDEF';
out = '';

for (i=0; i<string.length; i++) { // remove invalid color chars
schar = string.charAt(i);
if (chars.indexOf(schar) != -1) { out += schar; }
}

if (out.length != 6) { return null; } // check length
return out;
}

</script>
</head>
<body bgcolor="#000000" topmargin=0 leftmargin=0 onload="Init()">

<form method=get onSubmit="Set(document.all.ColorHex.value); return false;">

<table border=0 cellspacing=0 cellpadding=4 width=100%>
<tr>
<td bgcolor="buttonface" valign=center>
<div style="background-color: #000000; padding: 1; height: 21px; width: 50px">
<div id="ColorPreview" style="height: 100%; width: 100%"></div></div></td>
<td bgcolor="buttonface" valign=center>
<input type="text" name="ColorHex" value="" size=15 style="font-size: 12px"></td>
<td bgcolor="buttonface" width=100%></td>
</tr>
</table>

<table border=0 cellspacing=1 cellpadding=0 bgcolor=#000000 style="cursor: hand;">
<tr>
<td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height=10 width=10></td>


mit der Funktion (hier fett) schließ ich das window, wenn ne farbe ausgwählt ist, und geb den wert zurück an den opener...


jetzt aber mein problem:

ich hab auf der seite eben nicht nur ein solches eingabefeld, wo der benutzer eine farbe auswählen kann, sondern mehrere...

wie kann ich das jetzt machen, dass ich nicht für jedes textfeld, einen eigenen color-picker -seite erstellen muss, die nur an dieses textfeld zurückgibt?!....


meine idee war, dass ich mit dem aufruf color(); irgendwie einen parameter übergeben kann, wie zum Besipiel den feldnamen, für den man die farbe gerade aussucht (also z.B. color('textfeld1'); ), und dass dieser parameter dann in das popup mit übergeben wird...
das ist mein erstes problem!! da weiß ich nicht, wie ich das hinkrieg....

dann ist das zweite problem, wie kann ich eben diese variable im popup 'auslesen' und wieder zurück an die Funtion insert(); geben, sodass die farbe dann nur in das textfeld "textfeld1" übergeben wird....


Könnt ihr mir vielleicht weiterhelfen????
Ich wär euch sehr dankbar!!!!!

Gruß,
Toby

 
wahsaga
03-03-2004, 12:46 
 
übergebe der funktion color() beim aufruf den feldnamen.
hänge diesen beim öffnen des popups als GET-parameter an den scriptnamen an, select_color.php?feldname=textfeld1

dann brauchst du diesen im colorpicker-script ja nur noch mit PHP dynamisch an die stelle schreiben, wo der wert ins formularfeld des openers zurückgeschrieben werden soll.

 
Jaws
03-03-2004, 14:43 
 
danke für den tipp...
ich hab aber n bisschen gebraucht, bis ich gemerkt hab, dass man dann das "field" das per color('field'); übergeben wurde, so eingefügt wird:


function color(fieldname){
open('select_color.php?field='+fieldname, 'color', 'width=231 ,height=162');
}



ok, in der select_color.php hab ich jetzt dann auch den wert drinstehen, allerdings kann ich ihn nicht zurücküübergeben...



opener.insert(document.all.ColorHex.value, '<?php echo $_GET["field"]; ?>');




bei dieser funktion krieg ich dann immer einen fehler...

function insert(selectedcolor, returnedfield){
document.demo.returnedfield.value += selectedcolor;
}



kann mir da vielleicht jemand sagen, wie ich den feldnamen wieder in das document.demo. etc... reinkriege????

Thx...

 
wahsaga
03-03-2004, 15:30 
 
Original geschrieben von Jaws
bei dieser funktion krieg ich dann immer einen fehler...

function insert(selectedcolor, returnedfield){
document.demo.returnedfield.value += selectedcolor;
}

natürlich kriegst du da einen fehler, oder hast du etwa wirklich ein formularfeld mit dem namen returnedfield?

wenn du dort den wert der variablen returnedfield für den feldnamen benutzen willst, muss die schreibweise natürlich anders aussehen.

wie, steht im ersten beispiel unter http://selfhtml.teamone.de/javascript/objekte/elements.htm#allgemeines

 
Jaws
03-03-2004, 16:39 
 
danke, jetzt klappts wunderbar!!!! :D :) :cool:


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:08 Uhr.