[JS] IE submit mijn form niet.

Pagina: 1
Acties:

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
het zoveelste 'ie submit form niet' topic..
ik heb deze gelezen:
Het zoveelste javascript-form-submit draadje

en toch werkt het hier niet.

dit is mijn code
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
    $uri=getenv('REQUEST_URI');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="nl">
    <head>
        <title></title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <?
            print_r($_POST);
        ?>
    

        <script type="text/javascript">
            function vote(text) {
                var option = document.getElementById('option');
                option.value = text;

                document.forms['poll'].submit();
            }
        </script>
        
        <form id="poll" method="post" action="<?=$uri?>">
            <input type="hidden" id="option" name="option" value="">
            
            <a href="javascript:void(0)" onclick="vote(1);">a</a><br />
            <a href="javascript:void(0)" onclick="vote(2);">b</a><br />
            <a href="javascript:void(0)" onclick="vote(3);">c</a><br />
            
            
        </form>
    
    </body>
</html>


en hij staat hier online:
http://basiep.nl/zooi/form.php

wat ik al geprobeerd heb:
JavaScript:
1
2
3
4
5
    var option = document.getElementById('option');
    option.value = text;

    var frm = document.getElementById('poll');
    frm.submit();

wat prima werkt in FF, maar niet in IE (ding submit gewoon niet)

wat ik ook al geprobeerd heb:
JavaScript:
1
2
3
4
    var option = document.getElementById('option');
    option.value = text;

    option.form.submit();   

wat prima werkt in FF, maar niet in IE (ding submit gewoon niet)

[ Voor 23% gewijzigd door BasieP op 17-02-2007 18:23 ]

This message was sent on 100% recyclable electrons.


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 05-11 19:33
In IE7 werkt het hier wel. IE6 zal dan wel buggen. Geen idee wat je er aan kan doen. Misschien submitten na een korte timeout? (Je kunt het zo gek niet bedenken bij IE)

Noushka's Magnificent Dream | Unity


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
Michali schreef op zaterdag 17 februari 2007 @ 18:22:
In IE7 werkt het hier wel. IE6 zal dan wel buggen. Geen idee wat je er aan kan doen. Misschien submitten na een korte timeout? (Je kunt het zo gek niet bedenken bij IE)
nou hoe belachelijk het ook klinkt, ik heb het geprobeerd en.. (goddamn MS).. het werkt

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
        <script type="text/javascript">
            function vote(text) {
                var option = document.getElementById('option');
                option.value = text;
                
                setTimeout('smit();', 100);
            }
            
            function smit() {
                var frm = document.getElementById('poll');
                frm.submit();
            }
        </script>

This message was sent on 100% recyclable electrons.


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Het ligt aan denk ik aan de void(0);. Haal die eens weg en doe het eens netjes. Dus een url in de href en de href cancelen door return false in de onclick.

Huur mij in als freelance SEO consultant!


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
CrashOne schreef op zaterdag 17 februari 2007 @ 18:32:
Het ligt aan denk ik aan de void(0);. Haal die eens weg en doe het eens netjes. Dus een url in de href en de href cancelen door return false in de onclick.
en wat voor url zou er in de href moeten? wat ik nu doe is gewoon valid hoor. (hoewel url cancelen geen kwaad kan)



even geprobeerd:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
            function vote(text) {
                var option = document.getElementById('option');
                option.value = text;
                
                //setTimeout('smit();', 10);

                var frm = document.getElementById('poll');
                frm.submit();

                return false;
            }


bij 'javascript:void(0)' gaat dit in IE fout
bij 'http://tweakers.net' gaat ie naar t.net toe (return false snapt ie niet bij een functie)
bij 'http://tweakers.net' met achter de onclick een 'return false;' gaat ie goed, alleen waar zou ik dan naartoe moeten linken? beetje belachelijk dat ik naar een url moet verwijzen als mijn onclick alles afhandeld..

verder wordt over het internet overal gewoon javascript:void(0) gebruikt.. lijkt me dus niet dat dat 'fout' is

[ Voor 54% gewijzigd door BasieP op 17-02-2007 18:44 ]

This message was sent on 100% recyclable electrons.


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Het is niet fout, maar netjes is anders. Je kan de href ook gewoon leeg laten op de laatste manier die je hebt geprobeerd.

Huur mij in als freelance SEO consultant!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:09

crisp

Devver

Pixelated

Je moet ook geen a-element gebruiken voor dingen die geen link zijn...

Even van mijn eigen weblog quoten :P
Note the 'return false': this prevents a JS-capable client to actually start navigating to 'alternative.html'. That brings us to another problem with the javascript: pseudo-protocol, namely the fact that IE (at least up to version 6) enters a different 'state' when the href of a link is being followed no matter if it contains an actual link or a javascript function.

[ Voor 57% gewijzigd door crisp op 17-02-2007 22:22 ]

Intentionally left blank


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
crisp schreef op zaterdag 17 februari 2007 @ 22:20:
Je moet ook geen a-element gebruiken voor dingen die geen link zijn...

Even van mijn eigen weblog quoten :P

[...]
alternatief is dat ik een span maak (bijv.) en die dmv css speciaal 'hetzelfde' moet gaan opmaken als ik ene linkje doen..
dus ook een :hover ding geven.
Daar kom ik dan weer aan met IE6 waar ik geen :hover kan toepassen op andere dingen dan linkjes. Wat resulteert in een javascript voor het hover effect..

sorry, maar tenzij er betere alternatieven zijn houd ik het bij 'foutieve' anchor elementen..

ik heb inmiddels wel de 'href' veranderd naar iets leuks.. ('stem op: ...') maar dit zorgt weer dat non-JS browsers (bijv. crawlers) een 404 krijgen..

[ Voor 10% gewijzigd door BasieP op 17-02-2007 22:25 ]

This message was sent on 100% recyclable electrons.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:09

crisp

Devver

Pixelated

BasieP schreef op zaterdag 17 februari 2007 @ 22:23:
[...]
sorry, maar tenzij er betere alternatieven zijn houd ik het bij 'foutieve' anchor elementen..
Het beste alternatief is uitgaan van een non-JS gebaseerde oplossing (in dit geval dus gewoon submit-buttons gebruiken) en pas achteraf met javascript alternatieve behavior gaan toevoegen (unobtrusive).

Overigens is het :hover probleem in IE6 met 1 simpel htc-componentje op te lossen. Beter dat dan je laten tegenhouden door een antiek product dat helaas toevallig nog een redelijk marktaandeel heeft ;)
ik heb inmiddels wel de 'href' veranderd naar iets leuks.. ('stem op: ...') maar dit zorgt weer dat non-JS browsers (bijv. crawlers) een 404 krijgen..
Tsja, ik snap dat je votes niet met een GET wilt verwerken ;)
Een alternatief zou wel zijn om op een GET met een vote-id een tussenpagina te tonen met 'Weet u zeker dat u op x wilt stemmen?' en dan een POST-form met een normale submitbutton. In that case heb je rechtvaardiging voor het gebruik van een anchor ;)

Intentionally left blank

Pagina: 1