HighDots Forums  

eventhandler verhält sich komisch

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss eventhandler verhält sich komisch in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Ervin Peters
 
Posts: n/a

Default eventhandler verhält sich komisch - 11-28-2007 , 06:46 AM






Ich habe im xhtml:

--------------8<-------------
<div id="uppermiddle">
<div id="umiddleleft">
<div id= "logindiv" >
<span class="blackborder"><input class="ifield" type="text"
name="login" size="15" maxlength="5"
onchange="javascript:showelementonnonempty(this.va lue, 'passdiv')"
onblur="javascript:showelementonnonempty(this.valu e, 'passdiv')" /></span>
LOGIN FIRMENKUNDEN
</div>
</div>
<div id="umiddleright">
<div id="linkstartseite">
ZUR STARTSEITE
</div>
</div>
</div>

<div id="middle">
<div id="middleleft">
<div id= "passdiv" >
<span class="blackborder"><input class="ifield" type="password"
name="passwd" size="15" maxlength="30" /></span>
KENNWORT <!--input type="submit" name="action" value="login" /-->
</div>
</div>
<div id="middleright">
&nbsp;
</div>
</div>
--------------8<-------------

und will das div mit der id 'passdiv' in abhängigkeit von einem
vorhandenen Inhalt des input feldes mit name="login" erscheinen oder
verschwinden lassen.

dazu habe ich den eventhandler auf

function showelementonnonempty(myvalue, elementid)
{
var destobj = document.getElementById(elementid);
var estatus = destobj.style.display;
if ( myvalue != "" && ( estatus == "" || estatus == "none" ))
Effect.Appear(destobj,{duration: 2});
else
Effect.Fade(destobj,{duration: 2});
}

gesetzt, die ja die eingebundenen scriptaculous Funktionen benutzt.

Das funktioniert nur leider nicht.

(seamonkey, venkman, gentoolinux, gnome)

Setze ich einen Breakpoint auf den Anfang der funktion werden beide
Effect.* Functionen nacheinander angesprungen!?

Auch wenn ich explizite Klammern setze, geht es nicht.

Was mache ich falsch?

Danke

ervin

Reply With Quote
  #2  
Old   
Ervin Peters
 
Posts: n/a

Default Re: eventhandler verhält sich komisch - 11-30-2007 , 03:56 AM






Am Thu, 29 Nov 2007 15:40:42 +0100 schrieb Ralf Beutler:

Quote:
btw. Wenn du scriptacolous verwendest, hast du doch automatisch
prototype dabei. Dann kannst du hier auch verwenden:

var destobj = $(elementid);
Danke Was gelernt, gibt es irgendwo empfehlenswerte Dokus und
Tutorials?

Quote:
Es funktioniert sogar hervorragend ;-)
nö. Hier noch mal das aktuelle xhtml und die Funktion:

<span class="blackborder">
<input class="ifield" type="text" name="login" size="15" maxlength="5"
onkeyup="javascript:showelementonnonempty(this.val ue, 'passdiv')"
onfocus="javascript:showelementonnonempty(this.val ue, 'passdiv')" />
</span>

Also, wenn das Feld den Focus erhält oder der User etwas eingibt soll die
Funktion aufgerufen werden.

Und die funktion prüft ob der Feldinhalt leer ist und blendet das
Passworteingabefelld ein, wenn es nicht leer ist.

function showelementonnonempty(myvalue, elementid)
{
var destobj = $(elementid);
var estatus = destobj.style.display;
if ( myvalue != "" )
{
if ( estatus !="block" )
//destobj.style.display = "block";
Effect.Appear(destobj,{duration: 2});
}
else
//destobj.style.display = "none";
Effect.Fade(destobj,{duration: 2});
//return(void);
}


Aber so geht es also nicht, wenn ich aber die Effect funktionen
auskommentiere und die style.display direkt setzte, dann geht es. ???

Erstaunlicherweise unter seamonkey und unter IE6 unter w2k

Quote:
Um das zu machen, was du willst, wirst du Tasturevents beobachten müssen
und den Wert des Feldes vor dem Event mit dem aktuellen Wert vergleichen
müssen.
done.

Danke.

ervin


Reply With Quote
  #3  
Old   
J. Strübig
 
Posts: n/a

Default Re: eventhandler verhält sich komisch - 11-30-2007 , 04:44 AM



Ervin Peters schrieb:
Quote:
Am Thu, 29 Nov 2007 15:40:42 +0100 schrieb Ralf Beutler:
nö. Hier noch mal das aktuelle xhtml und die Funktion:

span class="blackborder"
input class="ifield" type="text" name="login" size="15" maxlength="5"
onkeyup="javascript:showelementonnonempty(this.val ue, 'passdiv')"
onfocus="javascript:showelementonnonempty(this.val ue, 'passdiv')" /
/span
Das 'javascript:' kannst du dir sparen, hat dir aber auch schon Ralf gesagt.

Struppi.


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.