function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function wireSearchBox() {
var b = document.getElementById("txtSearch");
b.temp = b.value;
b.addEventListener('focus', function() {
if (this.value == this.temp) this.value = '';
this.addEventListener('blur', function() {
if (this.value.length < 1)
{
this.value = this.temp;
}
}, false);
}, false);
}
addLoadEvent(wireSearchBox);
addLoadEvent() är det inte jag som har kommit på, måste jag ändå säga, utan det är quirksmode.org, men wireSearchBox är det jag som har kommit på - man blir ju bättre eller hur (ni som har sett mig skriva här innan vet). I alla fall så klagar den på rad nitton:
if (this.value == this.temp) this.value = '';
och säger något oförståligt... Någon som vet vad jag gör för fel? För funktionen fungerar perfekt.
Beskrivning av funktionen:
Hämta nuvarande text. När man klickar i rutan tas texten bort. När man sedan flyttar bort markören från rutan kollas det om det finns någon inskriven text i rutan och om det inte finns det så återställs den första texten. Om personen _har_ skrivit in något så tas inte det bort när markören tas bort.
...men eftersom man sedan kan markera rutan igen så måste man kolla rad 19: om det är användarens text eller orginaltexten som står där, för om det är användarens redan insatta så ska den inte tas bort när fokus kommer i textrutan.
Min andra fråga då: går det att göra den här koden snyggare?
Vad jag har att anmärka på, är att du skapar en ny egenskap (temp) för input-elementet. En egenskap som egentligen inte existerar för <input> (inte någon annan tagg heller för den delen). Kanske kan det vara därför FF säger ifrån.
Istället kan du skapa en lokal variabel (var foo, säg) som du sparar den temporära datan i.
Testade byta ut till "foo" som variabel och jag får fortfarande samma fel. Fast man ser det inte direkt när man klickar, utan man måste gå in på tools --> javascript console i firefox för att se felet.
Kollade med en kompis (silfver) och han får samma fel...