Frage

Ich bin mit PHP einem Login-Formular zu übergeben, wenn erforderlich, und hier ist der Code:

$htmlForm = '<form id="frmlogin">'.'<label>';
switch(LOGIN_METHOD)
{
    case 'both':
        $htmlForm .= $ACL_LANG['USERNAME'].'/'.$ACL_LANG['EMAIL'];
        break;
    case 'email':
        $htmlForm .= $ACL_LANG['EMAIL'];
        break;
    default:
        $htmlForm .= $ACL_LANG['USERNAME'];
        break;
}                       

$htmlForm .= ':</label>'.
             '<input type="text" name="u" id="u" class="textfield" />'.
             '<label>'.$ACL_LANG['PASSWORD'].'</label>'.
             '<input type="password" name="p" id="p" class="textfield" />'.
             '<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
             '</form>';

return $htmlForm;

Das Problem ist, dass, wenn der Benutzer Treffer in IE8 eingeben, wird das Formular nicht, und der Benutzer gezwungen ist, die Submit-Button zu schlagen.

Wie behebe ich das?

War es hilfreich?

Lösung

Wenn dies ein echtes Problem und Sie können eine andere Lösung nicht finden Sie ein onkeypress Ereignis für das Formular immer tun können, und prüfen Sie, ob die Enter Taste gedrückt wurde.

EDIT: Hier ist der richtige Code gemäß Maschinen Antwort:

$htmlForm .= ':<form><label>'.$ACL_LANG['USERNAME'].'</label>'.
                                     '<input type="text" name="u" id="u" class="textfield" />'.
                                     '<label>'.$ACL_LANG['PASSWORD'].'</label>'.
                                     '<input type="password" name="p" id="p" class="textfield" />'.
                                     '<center><input type="submit" name="btn" id="btn" class="buttonfield" value="Sign in to extranet" /></center>'.
                                     '</form>';

EDIT 2: Ihre HTML gültig ist. Versuchen Sie dieser :

function checkEnter(e) { //e is event object passed from function invocation
    var characterCode //literal character code will be stored in this variable

    if (e && e.which) { //if which property of event object is supported (NN4)
        e = e
        characterCode = e.which //character code is contained in NN4's which property
    }
    else {
        e = event
        characterCode = e.keyCode //character code is contained in IE's keyCode property
    }

    if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
        document.forms[0].submit() //submit the form
        return false
    }
    else {
        return true
    }
}

Andere Tipps

Achten Sie auch für diesen Spaß Spaß Fehler:

Ich habe auf die harte Tour gelernt, dass, wenn das Formular auf Seite Last display:none ist, auch wenn Sie es später zeigen, mit Javascript, IE8 noch nicht betreten muss. wenn jedoch ist es nicht bei Laden der Seite versteckt, und Sie setzen es nach dem display:none, wie onDOMReady, dann funktioniert es! WTF

Mehr Details und Abhilfe hier: http: // www.thefutureoftheweb.com/blog/submit-a-form-in-ie-with-enter

Simulieren einen Klick

Hier ist, wie ich es in jQuery tun.

// Recreating normal browser behavior in Javascript. Thank you, Microsoft.
jQuery.fn.handle_enter_keypress = function() {
  if ($.browser.msie){
    $(this).find('input').keypress(function(e){
      // If the key pressed was enter
      if (e.which == '13') {
        $(this).closest('form')
        .find('button[type=submit],input[type=submit]')
        .filter(':first').click();
      }
    });
  }
}

$('form').handle_enter_keypress();

Hier ist ein Link in Microsoft darauf, die für Sie etwas Licht könnte.

Einen schnellen Lesen der Link könnte es tatsächlich einen Fehler Absenden des Formulars durch die Enter-Taste in Betracht gezogen werden, die ich vermute, würde von Microsoft für IE8 befestigt ist worden.

IE Anomalie bei der Verwendung der Enter-Taste ein Formular einreichen

Edit:

Dies wurde entfernt, aber eine andere Link es wieder Belag (unten auf der Seite), die a href <= "http://blogs.msdn.com/b/ie/archive/2008/12/17/ie-december-out-of-band-release.aspx "rel =" nofollow noreferrer "> definiert sie und erklärt den Fehler im IE Blog auf 18. Dezember 2008 .

Haben Sie eine Öffnung Formular-Tag haben, die gerade aus dem Code-Schnipsel weggelassen wurde?

Das action Attribut auf dem form Elemente wird durch die HTML-Spezifikation erforderlich. Vielleicht besser, es wird funktionieren.

Ich konnte dies auch mit einer Klage und Verfahren reproduzieren. Gezupft alle anderen Codes auf der Seite und es wird immer noch produziert. Allerdings habe ich Arbeit gesehen Formen in IE8 mit action = „“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top