Jeg er lige begyndt at rode med noget JS, og er selvfølgelig stødt ind i utallige problemer med browser kompatibilitet. Dette problem har jeg dog ikke været i stand til at løse; sandsynligvis fordi jeg ikke rigtig ved noget om hvordan browserne læser/burde læse koden. Det meste er fundet på nettet og derefter har jeg modificeret det en smule. Ideen er at man skal kunne tilføje ekstra form-felter samtidig med at den clearer deres value ved onFocus samt geninsætter værdien hvis feltet efterlades blankt.
Hele koden ser således ud: <script type="text/javascript">
var counter = 0;
function init() { document.getElementById('moreFields').onclick = moreFields; moreFields();
}
function addEventHandlers() { var formInputs = document.getElementsByTagName('input'); for (var i = 0; i < formInputs.length; i++) { var theInput = formInputs[i];
Det hele fungerer fint nok i Firefox, Opera og Safari som jeg har testet det på, men IE clearer ikke felternes value. Hvis jeg derimod kører addEventHandler() funktionen i starten af moreFields() funktionen i stedet for i slutningen som det står i ovenstående virker det i IE, men hverken i FF, Opera eller Safari...
Håber i forstår hvad jeg mener. Har prøvet at søge på nettet, men kunne ikke lige komme på de rigtige søgeord uden at skrive en halv stil :P
Hej Din target.defaultText er tom i IE (alert box kan være go at debugge med ) Da default teksten er ens i alle tilfældene, når jeg har lavet noget ligende har jeg haft en funktion a la: function clearText(obj, text) { if(obj.value==text) obj.value=""; ... }
Det giver ikke helt den samme mulighed for genbrug, men den må du lige veje op mod hvad det skal bruges til
Den simple version startede jeg også med at lave i starten, men det kom aldrig til at fungere rigtigt. Den her fungerede derimod fint indtil jeg prøvede at flette de to funktioner, til at cleare teksten og tilføje "form-input", sammen... Og det er ikke kun det at defaultText er tom i IE, den reagerer slet ikke ved fokus i input felterne...
Hvis jeg derimod kører addEventHandlers() i begyndelsen af moreFields() funktionen fungerer IE jo helt fint... den både clearer og geninsætter... og jeg forstår ærlig talt ikke hvorfor det lige er sådan...
Jeg tror det er tricket med at klone en masse controls der måske ikke er helt go. Så vidt jeg lige kan se kører du samtlige inputs (på hele siden) igennem hver gang du tilføjer en blok, og tilskriver en eventhandler til alle sammen...
En pænere metode er at tilføje objekter via DOM træet. Jeg har lavet et eksempel herunder, som virker i FF og IE. Jeg ved dog ikke hvor pænt det er at bruge attributter der ikke er standard...
<head> <title>Untitled Page</title> <script> function AddField() { var defText = "asw"; var txt = document.createElement("input"); txt.setAttribute("type","text"); txt.setAttribute("value",defText); txt.defaultText = defText;
Nej den kører kun de to inputs der er i "readroot" igennem... det er fordi den ikke blot skal tilføje et enkelt felt, men en blok af felter.. Er taget herfra: http://www.quirksmode.org/dom/domform.html
det duer ikke til formålet bare at tilføje et enkelt felt desværre...
der skulle jo så laves om i koden så den tilføjede de samme felter som før... Det er ihvertfald en mulighed, ser lige om jeg får tid til at kigge på eksemplet. quirksmode.org plejer ihvertfald at være en rigtig go kilde...
quirksmode.org laver nu bunker af fejl - og scriptet, der linkes til, er da også et udmærket eksempel. Hvis man ønsker at bruge HTML-DOM, kan det kun ske, hvis man også bruger HTML som markup. Forfatteren bruger HTML-DOM sammen med XHTML-markup, og det er et absolut no-go. Han burde naturligvis have brugt XML-DOM, hvis koden skal give mening ;o)
sithlord >> Jeg er lidt i tvivl om, hvad det er, du præcist ønsker at lave. Prøv at elaborere lidt =)
Det er prøver på at lave er et system hvor man kan tilføje det ønskede antal inputs i en form, men de skal tilføjes i blokke ligesom på quirksmode... Og så ville jeg godt have den funktion at den clearede inputsnes værdier ved fokus på inputtet. Men den skal sætte værdien ind igen hvis feltet bliver efterladt tomt...
Håber i forstår det bedre... ved ikke rigtig noget om JS da jeg først begyndte at lege med det for 3 dage siden, men kan ikke forestille mig at det ikke er muligt at kombinere de to funktioner på en måde...
Mange tak fordi i gider hjælpe :D
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.