11. april 2004 - 20:08
Der er
21 kommentarer og 2 løsninger
Opret textbox
Hej Eksperter, Er det muligt at få Javascript til at oprette en <input type="text"> automatisk for hver gang jeg trykker på en knap? Hvis ja hvordan ?
Annonceindlæg fra HP
11. april 2004 - 20:24
#1
AnyOne??
11. april 2004 - 20:44
#2
Hvordan skal du bruge det, for det er ikke svært at lave et element: newInp = document.createElement('INPUT'); document.forms[0].appendChild(newInp); newInp.type="text"; newInp.name="nyInput"; newInput.value="En ny text"; newInput.disabled=true; -- men der skal være noget differentiering på indhold og navn ?-)
11. april 2004 - 20:47
#3
roenving> Er det IE eller X-browser?
11. april 2004 - 20:52
#4
Det er DOM-browser !-)
11. april 2004 - 20:59
#5
"newInput" skal være "newInp": newInput.value="En ny text"; newInput.disabled=true;
11. april 2004 - 21:04
#6
har rettet det og det virker fint: <script type="text/JavaScript"> <!-- function doit() { newInp = document.createElement('INPUT'); document.forms[0].appendChild(newInp); newInp.type="text"; newInp.name="nyInput"; newInp.value="En ny text"; // har fjernet disabled=true.. man skal jo kunne skrive i feltet..? :-) } //--> </script> <form> <input type="button" value="opret ny" onclick="doit()"> </form> - Men hvordan justerer man placering (top og left)? :-)
11. april 2004 - 21:06
#7
Roenving, det virker, ang. navn og value, så har jeg ordnet det. Men kan det lade sig gøre at lave den hidden i stedet for text ?
11. april 2004 - 21:14
#8
For at det virker med "hidden" skal linie "document.forms[0].appendChild(newInp);" stå nederest: newInp = document.createElement('INPUT'); newInp.type="hidden"; newInp.name="nyInput"; newInp.value="En ny text"; newInp.style.top = 200; document.forms[0].appendChild(newInp);
11. april 2004 - 21:17
#10
Aha.. du kan selv bestemme hvor den skal oprettes henne, hvis du bruger: newInp.style.position="absolute"; newInp.style.top = 200; newInp.style.left = 20;
11. april 2004 - 21:22
#11
>>thesurfer Husk _altid_ enhed på css-angivelser: '200px' !-) -- og det er rigtigt, at input types er så forskellige, at type skal være angivet før append ...
11. april 2004 - 21:30
#12
OK :-) Man skal så også huske at putte ' eller " tegn udenom :-) Hvorfor kan man så ikke aflæse værdien af feltet? F.eks.: <script type="text/JavaScript"> <!-- function doit() { newInp = document.createElement('INPUT'); newInp.type="text"; newInp.name="nyInput"; newInp.value="En ny text"; newInp.style.position="absolute"; newInp.style.top = "200px"; newInp.style.left = "20px"; document.forms[0].appendChild(newInp); } //--> </script> <form> <input type="button" name="objnew" value="opret ny" onclick="doit()"> <input type="button" name="objalert" value="opret ny" onclick="alert(document.forms[0].nyInput.value)"> </form> ( Det skal lige siges, at "document.forms[0]" kan erstattes af "this.form".. ) Hvis man ikke kan aflæse værdien, er feltet jo værdiløst..?
11. april 2004 - 21:35
#13
OK.. underligt.. Man kan godt aflæse værdien, i Mozilla FireFox og Opera.. men ikke i Internet Explorer 6..?
11. april 2004 - 21:46
#14
Og du kan prøve denne: <input type="button" name="objalert" value="vis ny" onclick="f=this.form.elements;txt='';for(i=0;f.length>i;i++)txt+=f[i].type+' - '+f[i].name+':\t'+f[i].value+'\n';alert(txt)">
11. april 2004 - 21:52
#15
Det virker fint :-) I Internet Explorer, kan man altså ikke tilgå det nye element direkte..? man skal loop'e igennem formens elementer..?
11. april 2004 - 21:53
#16
Det var også min konklusion, men jeg vil tro, at det faktisk virker ved submit, men det kan jeg ikke lige prøve ...
11. april 2004 - 22:01
#17
Hehehe.. jeg har bare overtaget spm'et :-) mini-me> Hvis du vil stille nogle spørgsmål, er du meget velkommen til gøre det :-) .. det med submit fik jeg ikke helt.. du mener at oprette en submit knap..?
11. april 2004 - 22:04
#18
Ja, jeg tror at feltet kommer med ved submit af formen !-)
11. april 2004 - 22:09
#19
hehe.. det gør det sq :-) Jeg klikkede på "opret ny"-knappen, og derefter på submit-knappen... Eksempel: <script type="text/JavaScript"> <!-- function doit() { newInp = document.createElement('INPUT'); newInp.type="hidden"; newInp.name="nyInput"; newInp.value="En ny text"; newInp.style.position="absolute"; newInp.style.top = "200px"; newInp.style.left = "20px"; document.forms[0].appendChild(newInp); } //--> </script> <form method="get"> <input type="button" name="objnew" value="opret ny" onclick="doit()"> <input type="button" name="objalert" value="vis ny" onclick="f=this.form.elements;txt='';for(i=0;f.length>i;i++)txt+=f[i].type+' - '+f[i].name+':\t'+f[i].value+'\n';alert(txt)"> <input type="submit" name="submit" value="Send"> </form> Gav urlen: ?submit=Send&nyInput=En+ny+text
14. april 2004 - 19:00
#20
smid nogle svar så vi kan få lukket :P Jeg har fået det til at virke...
14. april 2004 - 19:14
#21
Velbekomme '-)
15. april 2004 - 15:40
#22
OK, her er et svar, for min kritik af roenvings kode ;-) .. og "rettelser"/ideer..
05. december 2004 - 09:53
#23
-- og tak for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling