Avatar billede Hans1 Praktikant
27. maj 2012 - 14:23 Der er 10 kommentarer og
1 løsning

Value input

Hey

Har fundet denne kode til at angive en tekst i value så den forsvinder når man trykker i feltet samt kommer igen hvis der ikke står noget i feltet og man klikker væk.

Den virker fint i et input felt men hvad gør jeg i et textarea?
Hvor man ikke angiver value. Hvis jeg angver det i selve textarea'et får den jo ikke den farve som er angivet?

<input type="text" onkeyup="SetSearchStyle(this.value);" onfocus="if(this.value=='Søgeord...')this.value=''; this.style.color='#000000';" onBlur="if(this.value=='')this.value='Søgeord...'; this.style.color='#999999';" value="Søgeord..." />


<textarea onkeyup="SetSearchStyle(this.value);" onfocus="if(this.value=='Søgeord...')this.value=''; this.style.color='#000000';" onBlur="if(this.value=='')this.value='Søgeord...'; this.style.color='#999999';" value="Søgeord..."></textarea>
Avatar billede olsensweb.dk Ekspert
27. maj 2012 - 14:40 #1
hvis du anvender html5 kan du anvende placeholder istedet
<textarea placeholder="Describe yourself with 4 words..."></textarea>
<input type="text" name="fname" placeholder="First name" />
under html4 skal du includerer denne js fil https://github.com/NV/placeholder.js/
Avatar billede olebole Juniormester
27. maj 2012 - 14:47 #2
<ole>

Personlæigt bruger jeg noget i stil med:

<script type="text/javascript">
function setInptValue(elm, bFocus) {
    if (bFocus) {
        if (elm.value==elm.defaultValue) {
            elm.value = "";
            elm.style.color = "#000";
        }
    } else {
        if (elm.value=="") {
            elm.value = elm.defaultValue;
            elm.style.color = "#999";
        }
    }
}
</script>

<input onfocus="setInptValue(this, true)" onblur="setInptValue(this)"
    value="Skriv dit navn..." style="color:#999" type="text">


Du har et problem med hensyn til dit TEXTAREA: Et TEXTAREA ikke har en value attribut. Du kan aflæse og sætte et TEXAREA's værdi via JS og value property'en - men der findes ikke en value HTML-attribut  ;o)

<textarea>Her skrives feltets værdi i HTML</textarea>

/mvh
</bole>
Avatar billede Hans1 Praktikant
28. maj 2012 - 14:43 #3
SÅ man bliver nød til at lave tekstfeltet om til et input hvis det skulle virke?
Avatar billede olebole Juniormester
28. maj 2012 - 15:21 #4
Nej. Du kan bare ikke skrive:

<textarea value="heyhep"></textarea>

Du skal i stedet skrive:

<textarea>heyhep</textarea>
Avatar billede Hans1 Praktikant
28. maj 2012 - 15:32 #5
Super tak for hjælpen Ole :)
Avatar billede olebole Juniormester
28. maj 2012 - 15:43 #6
Selvtak. Hvis du fik dit problem løst, må du 'slås' med ronols om point ... jeg samler som bekendt ikke  =)
Avatar billede Hans1 Praktikant
28. maj 2012 - 15:46 #7
Fino. Ronols gider du smide et svar...
Avatar billede olebole Juniormester
28. maj 2012 - 16:13 #8
- og jeg prøver lige med en uddybende forklaring på det med value, da det måske ikke står krystalklart for alle  =)

Man kan betragte TEXTAREA (eller et hvilket somhelst andet element) på (mindst) to forskellige måder:

1) et tag i HTML-koden, som ved sideload implementerer selve elementet på siden.

2) et JS-object - forudsat, vi har kaldt elementet via JavaScript.

Et tag er blot nogle tegn i et tekstdokument. Det kan have forskellige attributer - f.eks: width, value eller placeholder. Disse attributter definerer nogle egenskaber ved det element, det pågældende tag engang vil implementere i en browser.

Et JS-object, der repræsenterer et element på siden, kan du f.eks. oprette med:

var myObject = document.getElementById("myTextArea");

Du kan godt skrive HTML- og JS-kode samtidigt, men selve JS-objektet kan først oprettes, når siden er loaded i browseren.

JS-objektet har nogle egenskaber (properties) - f.eks: width, value eller placeholder. De kan af de førnævnte årsager først tilgås, når siden er loaded og elementet er implementeret. Før siden ligger i en browser, giver begreberne elementer og properties ingen mening.

En value attribut og en value property er altså to forskellige ting:

Attribut: en tekststreng i en HTML-kode.
Property: en egenskab ved et eksisterende element i et loaded dokument.

Derfor kan der godt være forskel på, om et element kan/må have en bestemt attribut - og om man kan tilgå den samme egenskab som property på det (med JS kaldte) element.

Jeg kan altså godt skrive:

var myObject = document.getElementById("myTextArea");
myObject.value = "hephey";

- men jeg må ikke sætte en attribut value="hephey" i HTML-koden.

Det kan synes som ligegyldig teoretiseren for ældre herrer uden noget fornuftigt at tage sig til - men det er fakstisk ikke uvæsentlige forhold  =)
Avatar billede olsensweb.dk Ekspert
28. maj 2012 - 19:53 #9
velkommen tilbage olebole, en måned uden et indlæg fra dig.

Det kan synes som ligegyldig teoretiseren for ældre herrer uden noget fornuftigt at tage sig til - men det er fakstisk ikke uvæsentlige forhold  =)
det er faktisk ikke helt uvæsenligt i dette tilfælde.
det forklarer hvorfor dette virker
// fejl ved sidste tomme felt.
elm = document.getElementById('message').value;
if(elm===""){// tester om feltet er tomt
    element.innerHTML = "<img src=\"images/icons/error.png\" />  <h6> Der blev ikke angivet nogen besked!</h6>";
    return false;
}

som jeeg lavede i http://www.eksperten.dk/spm/963559 #1
Avatar billede olsensweb.dk Ekspert
28. maj 2012 - 19:54 #10
får lige et svar her som du efterspurgte
Avatar billede olebole Juniormester
28. maj 2012 - 21:06 #11
#9: Tak, jeg har haft travlt med andre ting og tog en (tiltrængt) pause  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester