Willkommen in der Webstatt Zum Webstatt Blog und Stories
Franky Franky am 22.01.07 15:57

moin leute,

titel sagt eigentlich schon alles. was ist hier falsch?
document.getElementByName("benutzername").attachEvent('onclick', 'this.value=""');
<input type="text" name="benutzername" value="bla" />

soll praktisch so werden:
<input type="text" name="benutzername" value="bla" onclick="this.value='';" />


lg,
franky

netcup.de Warum gibt es hier Werbung?
sili sili am 22.01.07 16:05

Das attachEvent kannte ich bisher noch nicht, aber mit unubtrusive Javascript sollte man dein Problem lösen können :)

der_nic der_nic am 22.01.07 16:36

vor allem:
Würde für ein Beispiel nicht ein onfocus genügen? Du willst ja dass wenn man ins Inputfeld klickt, dass dieses geleert wird. Das geht auch mit onfocus="this.value=' ';"

Franky Franky am 22.01.07 16:37

Danke, aber irgendwie geht das auch nicht =/
<script type="text/javascript"><!--//--><![CDATA[//><!--
function h6p_addevent(onwas, func){
if(window.addEventListener) return window.addEventListener(onwas, func, false);
else if (window.attachEvent) return window.attachEvent("on" + onwas, func);
else if (document.getElementById) return window.onwas = func;
}

loginbarjs = function(){
document.getElementsByName("benutzername").onclick = function(){
document.getElementsByName("benutzername").value = '';
}
}

onloadh6p = function(){
loginbarjs();
}

h6p_addevent('load', onloadh6p);
//--><!]]></script>


sonst noch Vorschläge?

Lg

Michael Michael am 22.01.07 19:01

Über eine sichere Möglichkeit, einen Eventhandler zu ergänzen, also ggf zusätzlich zu einem vorhandenen, würde ich mich ebenfalls freuen.
Ich habe noch keine browserübergreifende Lösung gefunden

Rene Rene am 22.01.07 20:15

voilá ... oder so ähnlich

<script type="text/javascript">
function bla() {
InputNode = document.getElementsByName("benutzername")[0];
InputNode.onclick = function() {
this.value="";
}
}
</script>


vg, René

Michael Michael am 22.01.07 20:22

Soweit war ich auch schon. Mein Problem ist folgendes *threadentführ*

Ich habe ein Formularfeld
<input type="text" name="tollesFeld" onclick="eineFunktion();" ... />

Und dieser Funktion will/muss/soll ich nun weitere Funktionen als onClick Handler hinzufügen.

Danke schon einmal

Rene Rene am 22.01.07 21:50

Evtl. kann dir da diese Bibliothek helfen. Die scheint ja dieses Problem zu lösen...
Dieses "addEvent-Problem" scheint ja ziemlich popelig zu sein mit einigen Workarounds.
Es gab sogar ein addEvent() Contest .... *g* ... schon krass, dass es in JS immernoch so schlimme und nervenzerstörende Probleme mit der Browserkompatibilät gibt.

Michael Michael am 22.01.07 22:26

Super. Vielen Dank.

Die Bibliothek in deinem Link hat zwar nicht direkt geholfen, da weint der IEX noch (vielleicht liegt es auch an mir). Aber die dort angesprochene klappt prima.

Sehr sehr geil.

Rene Rene am 22.01.07 22:46

ansonsten bin ich soweit gekommen:

<script type="text/javascript">
function bla() {
InputNode = document.getElementsByName("benutzername")[0];
this.oldValue = InputNode.onclick;

this.newValue = function() { // Hier kommen die neuen Methoden und Eigenschaften
InputNode.value=''; // z. B. leeres Input-Feld
}

InputNode.onclick = function() {
oldValue();
newValue();
}
}
</script>


das funktioniert zwar in beiden Browsern. Aber is ein bischen blöd, denn man kann nicht mit this auf das aktuelle Objekt beziehen. (edit: is eigentlich die kruxx, aber was solls :))
Find ich aber subjektiv besser als die bib *g*

Michael Michael am 22.01.07 23:10

Allerdings habe ich noch nicht verstanden, wie ich in später hinzugefügten Funktionen auf das "this" zugreifen kann. Es ist ja erst einmal nicht möglich Parameter zu übergeben.
Mein Ansatz bisher ist über das EVENT Objekt von JS per TARGET oder SRCELEMENT auf das auslösende Objekt zuzugreifen. Im FF und IE klappt es, leider aber umständlich, da die Zugriffswege beider Browser sich unterscheiden.

Im Endeffekt ist deine Version zwar schön und reicht oft aus, mein Plan ist allerdings einen Formvalidator zu schreiben, der so wenig Anpassung im Code wie möglich verlangt.
Also automatisch die Prüfungen des Formulars und vielleicht der Felder als Events hinzufügt und die alten beibehält. Einzig über den Weg der Markierung als Pflichtfelder und Art der Pflichtfelder bin ich mir noch nicht sicher.
Bisher denke ich entweder an Pseudo-Attribute oder eine CSS-Klasse. Auch wenn ich hier auf Anregungen sehr gespannt bin, ist es ein anderes Thema

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt