[JavaScript] color picker per popup für viele felder... HILFE!!!!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] color picker per popup für viele felder... HILFE!!!!

    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...

    Code:
    <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...

    Code:
    <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
        [B]opener.insert(document.all.ColorHex.value);[/B]           	  // 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

  • #2
    Re: [JavaScript] color picker per popup für viele felder... HILFE!!!!

    ü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.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      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:

      Code:
      function color(fieldname){
      	open('select_color.php?field=[B]'+fieldname,[/B] '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...


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


      bei dieser funktion krieg ich dann immer einen fehler...
      Code:
      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...

      Kommentar


      • #4
        Original geschrieben von Jaws
        bei dieser funktion krieg ich dann immer einen fehler...
        Code:
        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/javascrip...tm#allgemeines
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          danke, jetzt klappts wunderbar!!!!

          Kommentar

          Lädt...
          X