04. december 2013 - 11:53Der er
30 kommentarer og 1 løsning
Et lille default value script
Er der nogen, der har lyst til at lave et lille script, som kan give en default value til alle inputfelter med et specifikt name. Valuen skal selvfølgelig forsvinde når brugeren vil skrive i feltet og komme igen, hvis brugeren ikke skriver noget alligevel.
Tjaa tjoo.. IE9 og tidligere understøtter det ikke. Jeg burde måske bruge begge dele? Så jeg både understøtter dem, der ikke har JS aktiveret og dem, der har en gammel browser. Hvis man har en gammel browser med JS deaktiveret, så er man selv ude om det...!
Derudover er det et plugin (Gravity Forms) i WordPress som genererer inputfeltene, så et script lige til at putte i header.php, ville være nemmere at implementere.
I jQuery burde dette måske virke (har ikke afprøvet det):
var defaultvalue = 'Skrive noget her'; $('input[name=fieldname]').val(defaultvalue).focus(function() { if ($this).attr('mystate') != 'dontreset') $(this).attr('mystate', 'reset'); }).blur(function() { // sæt værdien tilbage til default hvis der ikke er indtastet noget if ($(this).attr('mystate') == 'reset') $(this).val(defaultvalue); }).keydown(function() { // tastetryk, sæt status så blur() ikke sætter værdien tilbage $(this).attr('mystate', 'dontreset'); });
Jeg vil meget gerne hjælpe folk - det er blandt andet derfor jeg er har på eksperten - men at give en løsning uden der er gjort bare en lille indsats og man har forsøgt sig selv er jeg ikke interesseret i.
Har du prøvet at debugge og se hvad scriptet gør eller ikke gør i forskellige browsere? Hvis, så ville du med stor sandsynlighed let kunne se det -det er selvfølgelig ikke ensbetydende med at du så også kan løse det, men så kan du vende tilbage med dit forsøg så vi kan se hvad der er gået galt.
Hvis du afprøvede scriptet (mere eller mindre) uden modificeringer ville du også kunne se om scriptet i det hele taget opførte sig som forventet - gør det ikke det er der jo ingen grund til at forsøge at bygge videre på det.
Det er fordi der ikke er fejl nu - så nu kan du teste om scriptet fungerer bare lidt som forventet. Er du i tvivl om hvad variabler er eller hvor langt scriptet egentlig når kan du vha fx console.log('var'); udskrive værdier til din developer toolbars console.
$(document).ready(function() { console.log('når vi hertil?') if ( !("placeholder" in document.createElement("input")) ) { console.log('mon vi når hertil?') .. } }
UPDATE! Jeg har netop fundet ud af at en placeholder attribut ødelægger resten af funktionen. Derfor skal jeg bruge en 100% jQuery løsning. Jquery skal sætte en default value på alle input med class'en "ginput_quantity".
som virker som den skal når jeg sætter det som attributter til et inputfelt. Problemet er dog at jeg vil gøre det i et script, hvor den tilføjer attributterne til alle med name="ja". Derudover skal jeg også have tilføjet en value til alle med name="ja". Har fundet
eller du kunne flytte det nederst på siden - når det ligger i toppen som nu eksisterer elementer ikke da de jo først dannes længere nede i koden og det er det ready løser for dig. At benytte ready er dog den rigtige løsning - men man ville normalt stadig lægge det nederst for hurtigst muligt at give en respons til brugeren.
Og selvtak for tålmodigheden - nu kan du jo selv snart kalde dig javascript-haj ;)
Så er det ved at være nogle år siden du har hørt efter ;) nej, til dit eksempel er det fint at placere i head, men inkludering af filer vil man altid placere i bunden.
Synes godt om
Ny brugerNybegynder
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.