In IE8 enter key in a form does not work

后端 未结 14 2356
失恋的感觉
失恋的感觉 2020-12-17 08:55

I have a problem that in IE8 the enter does not work to submit a form. I have generated a test page to expose this problem. It seems that displaying the form in the on

相关标签:
14条回答
  • 2020-12-17 09:22

    I can't say if it is a bug exactly, but I can confirm that the behavior you report has changed in IE 8... and I imagine it is probably a bug, not an deliberate change.

    If the form is set with CSS display:none the default submit button behavior doesn't work.

    Other browsers, including IE 7 (or even IE 8 using IE 7 standard compatibility mode) do not have problems.

    I've worked around the problem myself by just using height:0px; in the CSS, then having javascript set the appropriate height when I want to show the form. Using height instead, the default enter key submit behavior seems to work normally.

    0 讨论(0)
  • 2020-12-17 09:24

    I have found a proper solution and wanted it to share with u guys.

    Instead of using <input type="submit...>, use <button type="submit"...>. This will do exactly the same in the other browsers (IE6-7, FF3) AND works in IE8. :)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
    <html> 
    <head> 
    <style type="text/css">
    #test {
        display: none;
    } 
    </style> 
    <script type="text/javascript"> 
    onload = function() { 
        document.getElementById('test').style.display = 'block'; 
    };
    </script> 
    </head> 
    <body> 
    <form id="test" method="get" action="javascript:alert('woei!')"> 
        <input type="text" name="user" value="" /> 
        <input type="password" name="pw" value="" />
        <button type="submit" value="submit" id="submit"></button>
    </form> 
    </body> 
    </html>
    
    0 讨论(0)
  • 2020-12-17 09:25

    A fix to what @Jitendra Pancholi suggested- now it submits only the form we want, not all of them

    $("form input").keypress(function (e) {
       if(e.which === 13) {
          $(this.form).submit();
       }
    });
    
    0 讨论(0)
  • 2020-12-17 09:26

    This works for me in IE8. I had this problem when using only one input field.

    Read more: http://www.rachaelarnold.com/dev/archive/enter-key-form-submission-bug#ixzz2Y5Zwgj2k

    0 讨论(0)
  • 2020-12-17 09:27

    Yeah, I was bitten by this bug too today. I found this workaround, though (diff from the OP):

     <script type="text/javascript"> 
     onload = function() { 
         document.getElementById('test').style.display = 'block'; 
    +    document.getElementById('test').innerHTML =
    +        document.getElementById('test').innerHTML;
     } 
     </script> 
     </head>
    

    Simply recreate the contents of the form from the contents of itself. Yikes. But it works. (Famous last words...)

    0 讨论(0)
  • 2020-12-17 09:28

    Old ticket, but I'd like to add what I think is the explanation:

    IE8 does the following peculiar thing: the Enter key will submit the form, but any

    <input type="submit" name="MySubmitButton" value="I hope I detect THIS VALUE in POST" />
    

    won't be sent in the POST.

    IE9 changes the behavior and sends the value. Chrome has always sent the value, as far as my tests have shown.

    I hope this helps...

    0 讨论(0)
提交回复
热议问题