Readonly Eingabefeld Fehler im Internet Explorer

Ich habe einen seltsamen Fehler, na ja, MSIE.

Scheint, dass es auf allen wichtigen MSIE-Versionen fehlschlägt: 6, 7, 8 und 9 (!)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" ><head><title>test</title>

  <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
  <script type="text/javascript">
   jQuery(document).ready(function(){
    var test=jQuery('#in');
    test.focus(function(){
     if(test.val()=='empty')test.val('');
     test.attr('readonly',false);
    });
    test.blur(function(){
     if(test.val()=='')test.val('empty');
     test.attr('readonly',true);
    });
   });
  </script>

</head><body>

  <input type="text" value="empty" readonly="readonly" id="in"/>

</body></html>

assen Sie mich erklären, wie dieses System funktioniert und was falsch läuf

Wenn der Benutzer auf das Eingabefeld klickt (es fokussiert), sollte das Eingabefeld bearbeitbar gemacht werden (dh das schreibgeschützte Flag verlieren). Wenn er / sie dann das Eingabefeld verlässt (dh Unschärfeereignis), wird eine gewisse Verarbeitung durchgeführt (im Code nicht gezeigt) und das Eingabefeld wird nur lesbar gemacht.

Dies funktioniert in den meisten Browsern (Firefox, Opera, Webkit-basiert) wie ein Zauber, aber es gibt keine IE-Version (einschließlich 9 Beta). Das Problem ist, dass der Benutzer im Internet Explorer zweimal auf das Eingabefeld klicken muss.

An dieser Stelle könnten Sie fragen, ob das Eingabefeld beim ersten Mal schreibgeschützt ist. Nein, ich habe es getestet. Javascript meldet, dass es bearbeitbar ist.

Einfach reparieren, einfach ein Klickereignis im Eingabefeld auslösen (um das Doppelklickverhalten des Benutzers zu simulieren), nein? Nein,.click() und.focus() beide fehlgeschlagen. Keine Ahnung warum.

Bearbeiten Sie müssen wissen, dass der Cursor zumindest sichtbar im Textfeld angezeigt wird.

Wichtig Leute, bitte probiert zumindest den Code aus, bevor ihr antwortet!

Antworten auf die Frage(6)

Ihre Antwort auf die Frage