php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.04.2011, 13:24  
Neuer Benutzer
 
Registriert seit: 19.04.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Crusher befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] show/hide eines Buttons nach focus auf Textarea

Hallo liebe Community,

da ich mich privat und beruflich nun etwas mehr dem Thema PHP, html, javascript, usw. befassen möchte bzw. muss,
habe ich mich entschlossen mich in diesem Forum anzumelden und hoffe bei Problemen hier Lösungen, bzw. Anstöße in die richtige Richtung zu finden.
Desweiteren hoffe ich natürlich, dass ich selbst (irgendwann mal) bei Problemen helfen kann.

Ich hab auch gleich ein Problem (wer hätte das gedacht? ^^), in welches ich schon einiges an Zeit investiert habe aber leider steh ich immernoch total aufm Schlauch.

Ich möchte:
Beim Anklicken eines Textareas, dass mittels Javascript ein Button sichtbar gemacht wird.
Dies funktioniert auch ohne Probleme.

Mein Problem:
Wenn ich nun aber auf den Button klicken möchte verschwindet dieser durch das onblur-event vom Textarea.

Ich hoffe Ihr könnt mir bei diesem kleinen Problem helfen

Hier mein Testcode:

PHP-Code:
<?php
    
if (isset($_POST['submit'])) {
        echo 
$_POST['submit'];
    }
?>

<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css"></link>
        
        <script type="text/javascript">
            function setCSS(button, textarea) {
                button.className = (button.className == 'visible')?'hidden':'visible';
            }
            function checkJavascript() {
                elements = document.getElementsByName("submit");
                count = elements.length;
                for (var x=0; x<count; x++) {
                    elements[x].className = 'hidden';
                }
            }

        </script>
            
        <noscript>
            Kein Javascript aktiviert
        </noscript>
    </head>
    <body onload="checkJavascript();">
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
            <?php 
                
for($x=1$x <= $num=2$x++) {
                    echo 
"<textarea id=\"text$x\" name=\"text$x\" rows=\"1\" cols=\"20\" onFocus=\"setCSS(document.getElementById('button$x'), document.getElementById('text$x'));\" onblur=\"setCSS(document.getElementById('button$x'), document.getElementById('text$x'));\"></textarea>" 
                         
"<input id=\"button$x\" class=\"visible\" type=\"submit\" name=\"submit\" value=\"submit$x\"></input><br>";
                }
            
?>
        </form>
    </body>
</html>
und mein style.css
Code:
textarea { 
	color: #999; 
	font-size: 13px; 
  	font-weight: bold; 
}

textarea:focus, textarea:active { 
	color: #000; 
	width: 200px;
  	height: 50px;
}

.visible {
	visibility:visible;	
}

.hidden {
	visibility:hidden;
}

Geändert von Crusher (19.04.2011 um 13:37 Uhr). Grund: ungünstige Titelwahl
Crusher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2011, 13:29  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.706
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Dein Thread-Titel ist schlecht bzw. unglücklich gewählt. Bitte ändere diesen und beachte dabei Bitte aussagekräftige Threadtitel verwenden

Du musst den Status des Buttons irgendwo speichern. Sich allein auf onfocus und onblur zu verlasssen klappt natürlich nicht.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline   Mit Zitat antworten
Alt 19.04.2011, 13:29  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Crusher Beitrag anzeigen
Mein Problem:
Wenn ich nun aber auf den Button klicken möchte verschwindet dieser durch das onblur-event vom Textarea.
Dann verzichte darauf, durch den Blur-Event der Textarea den Button auszublenden, wenn das nicht das ist, was du möchtest.

Und wenn es „so einfach nicht ist“ - dann beschreibe bitte detailierter, was du genau möchtest.


Und poste bitte, wenn du ein clientseitiges Problem diskutieren möchtest, auch nur clientseitigen Code - serverseitiger (PHP-)Code ist dabei nicht hilfreich, sondern macht das ganze u.U. nur unklarer.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.04.2011, 13:47  
Neuer Benutzer
 
Registriert seit: 19.04.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Crusher befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Manko10 Beitrag anzeigen
Dein Thread-Titel ist schlecht bzw. unglücklich gewählt. Bitte ändere diesen und beachte dabei Bitte aussagekräftige Threadtitel verwenden
Hmm, gleich mein erster Fauxpas.
Ein guter Einstieg in eine Forenkarriere sieht wohl anders aus.
Ich bitte um Entschuldigung und hoffe das der jetzt gewählte Titel besser passt.



Zitat:
Zitat von ChrisB Beitrag anzeigen
Dann verzichte darauf, durch den Blur-Event der Textarea den Button auszublenden, wenn das nicht das ist, was du möchtest.

Und wenn es „so einfach nicht ist“ - dann beschreibe bitte detailierter, was du genau möchtest.
Beim klicken in das Textareafeld soll der Button sichtbar werden und
beim klicken außerhalb des Textareafeldes, soll der Button wieder versteckt werden (deswegen nutze ich z.Zt. dort das onBlur-event).
Wenn ich, wie du gesagt hast, auf das Event verzichte, dann würde der Button, bei einem Klick außerhalb des Feldes, ja weiterhin angezeigt werden und das soll nicht der Fall sein.


Zitat:
Zitat von ChrisB Beitrag anzeigen
Und poste bitte, wenn du ein clientseitiges Problem diskutieren möchtest, auch nur clientseitigen Code - serverseitiger (PHP-)Code ist dabei nicht hilfreich, sondern macht das ganze u.U. nur unklarer.
Ich dachte mir, dass dies für eventuelle Testzwecke hilfreich sein könnte.
Werd aber nächstes Mal versuchen mich an deinen Hinweis zu halten

Geändert von Crusher (19.04.2011 um 14:09 Uhr).
Crusher ist offline   Mit Zitat antworten
Alt 19.04.2011, 14:12  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Crusher Beitrag anzeigen
Beim klicken in das Textareafeld soll der Button sichtbar werden und
beim klicken außerhalb des Textareafeldes, soll der Button wieder versteckt werden
Nein, das soll er eben offenbar nicht - zumindest nicht pauschal.

Um dieses Problem zu lösen, ist es also erst mal erforderlich, es in genau diesem Punkt klarer zu formulieren/spezifizieren.

Definiere also die Fälle, in denen er beim „Klicken außerhalb der Textarea“ wieder versteckt werden soll, und in welchen nicht.
Wie es aussieht, sind das erst mal genau zwei Fälle, die unterschieden werden möchten. Nachdem diese formuliert sind, kann es daran gehen zu überlegen, wie diese Unterscheidung getroffen werden kann.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.04.2011, 14:20  
Neuer Benutzer
 
Registriert seit: 19.04.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Crusher befindet sich auf einem aufstrebenden Ast
Standard

Fall 1) Der Button wird wieder versteckt,
sobald der Focus nicht mehr auf dem Textarea liegt.
(Ausnahme Fall 2)

Fall 2) Der Button wird nicht versteckt,
wenn der Focus auf dem Button liegt
Crusher ist offline   Mit Zitat antworten
Alt 19.04.2011, 14:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von Crusher Beitrag anzeigen
Fall 1) Der Button wird wieder versteckt,
sobald der Focus nicht mehr auf dem Textarea liegt.
(Ausnahme Fall 2)

Fall 2) Der Button wird nicht versteckt,
wenn der Focus auf dem Button liegt
Dieses Verhalten macht doch ohne weitere Erklärung überhaupt keinen Sinn.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.04.2011, 14:40  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Crusher Beitrag anzeigen
Fall 1) Der Button wird wieder versteckt,
sobald der Focus nicht mehr auf dem Textarea liegt.
(Ausnahme Fall 2)

Fall 2) Der Button wird nicht versteckt,
wenn der Focus auf dem Button liegt
Das ist jetzt aus Anwender-Sicht formuliert.
Wir sind aber nicht der Anwender, sondern der Programmierer, der das umsetzen soll

Außerdem sind bei deiner Formulierung die Fälle nicht unabhängig voneinander, sondern der zweite schränkt den ersten ein - das erschwert ihre Betrachtung.


Generell günstiger wäre es, erst mal so zu formulieren:

Fall 1)
Ist-Zustand: Button ist sichtbar.
Eintretendes Ereignis: Textarea verliert den Fokus durch Klick auf irgendetwas anderes als den Button.
Gewünschtes Ergebnis: Button wird wieder versteckt.

Fall 2)
Ist-Zustand: Button ist sichtbar.
Eintretendes Ereignis: Textarea verliert den Fokus durch Klick auf den Button.
Gewünschtes Ergebnis: Button soll sichtbar bleiben. (Bzw. alternativ formuliert: Es soll gar keine Reaktion auf das Ereignis stattfinden.)


Diese Fälle sind „unabhängig“ von einander, und es ist auch sehr leicht erkennbar, was sie unterscheidet: Wohin der Klick, der zum Fokusverlust der Textarea führt, ist das interessante und entscheidende Kriterium, welches also in der Implementierung des ganzen gesonderte Betrachtung erfordert.


Leider gibt es für den Blur-Event keine Information darüber, wodurch der Fokusverlust ausgelöst wurde.
Also muss eine Möglichkeit gefunden werden, beim Reagieren auf den Klick- oder Fokus-Event des Buttons zu verhindern, dass dieser versteckt wird.
Das wird dadurch erschwert, dass diese Events aber erst nach dem Blur-Event der Textarea feuern.

Eine denkbare Möglichkeit wäre, beim Blur-Event der Textarea den Button nicht augenblicklich zu verstecken, sondern dies durch einen Timeout zu verzögern. Wenn kurz danach der Klick- oder Fokus-Event auf dem Button eintritt, könnte dieser Timeout dann wieder gelöscht werden.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.04.2011, 14:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich verstehe überhaupt nicht den Sinn dieses Verhaltens. Das zu beschreiben wäre mal praktisch.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 19.04.2011, 15:54  
Neuer Benutzer
 
Registriert seit: 19.04.2011
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Crusher befindet sich auf einem aufstrebenden Ast
Standard

@ChrisB: Vielen Dank, mit setTimeout() funktioniert es nun
War ja doch ne schwere Geburt... und ich dachte eigentlich ich hätte mich bei der Problemstellung am Anfang klar ausgedrückt, naja so schnell kann man sich irren


Zitat:
Zitat von nikosch Beitrag anzeigen
Ich verstehe überhaupt nicht den Sinn dieses Verhaltens. Das zu beschreiben wäre mal praktisch.
Der Sinn dahinter ist der,
dass der Button wirklich erst angezeigt werden soll,
wenn der Anwender das Textareafeld ausgewählt hat.

In meinem "Privatprojekt" kann es vorkommen, dass auf einer Seite z.B. 20 Textareas zu sehen sind (und dann soll es auch 20 Buttons geben)
warum sollten dann alle Buttons angezeigt werden?

Ich finde, wenn nur der relevante Button (also der zu dem ausgewählten Textarea) angezeigt wird, dann wirkt alles etwas übersichtlicher
Crusher ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Problem mit dynamischer URL in Javascript Dateien da.eXecutoR JavaScript, Ajax und mehr 4 28.09.2010 17:18
[Erledigt] Problem mit Zeile löschen Tabelle Javascript nBassCom JavaScript, Ajax und mehr 2 02.06.2010 14:36
[Erledigt] CSS und Javascript Dropdown Menu IE PROBLEM unreal87 HTML, Usability und Barrierefreiheit 3 19.05.2010 19:20
Problem mit GB Smily javascript / <form> lordcyphon JavaScript, Ajax und mehr 4 10.11.2009 15:40
Javascript Cookie Problem scheffie JavaScript, Ajax und mehr 14 19.07.2009 05:07
Problem mit einbindung von javascript auf einer php seite mysteryxxx PHP Tipps 2009 7 01.02.2009 16:40
1101: 10x JavaScript und kein Ende ist abzusehen… Nikolaus 2.0 Adventskalender 2008 9 13.12.2008 20:11
Problem: javascript + verstecken eines Divs se-clan HTML, Usability und Barrierefreiheit 4 04.01.2007 10:49
problem mit javascript und smarty snatch-ic HTML, Usability und Barrierefreiheit 2 08.06.2006 22:11
JavaScript Problem 2wuck HTML, Usability und Barrierefreiheit 3 02.01.2006 14:15
Problem mit Javascript: lässt sich nicht auslagern blinkster.de HTML, Usability und Barrierefreiheit 2 01.10.2005 15:20
Problem mit Javascript in PHP PHP Tipps 2005-2 3 19.09.2005 00:49
[Erledigt] Problem mit Javascript HTML, Usability und Barrierefreiheit 21 16.09.2005 19:50
JavaScript Problem IE HTML, Usability und Barrierefreiheit 5 30.07.2005 16:50
propertie problem in javascript HTML, Usability und Barrierefreiheit 1 07.11.2004 14:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php show hide button, javascript button focus, html button verstecken, php nach submit gleich auf neue seite mit hidden button, buttons sichtbar nach aktivierung php, ajax button verschwindet beim anklicken, nach button klick in eine textarea, php texarea hidden visible, javascript in php echo onfocus, php textfeld sichtbar wenn button klick, php textarea erst durch focus anzeigen, php textarea erst bei klick anzeigen, show hide button html, css button remove focus, javascript fokus setzen auf text hyperlink, klick auf button neue textarea, php nach button klick text sichtbar, javascript show hide focus, nach button klick textarea anzeigen html, fokus auf hide

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum