2009-06-05 16 views
1

Ich versuche, ein Textfeld den Wert zu erhalten, mit Jquery zu aktualisieren, wie im folgenden Code dargestellt:jquery-Problem mit val() in IE6

<button type="button" onclick="setLine();">Set</button> 
<button type="button" onclick="showLine();">fire!</button><p></p> 
    <textarea id="hello"> 

    </textarea> 
    <script type="text/javascript"> 
      $('#hello').val("hi there"); 
     </script> 
    <script type="text/javascript"> 
     function showLine() 
     { 
      alert($('#hello').val()); 
     } 
     function setLine() 
     { 
      $('#hello').val('foo'); 
     } 
    </script> 

Dieser Code funktioniert in allen gängigen Browsern außer IE6 in Ordnung.

In IE6 wird die TextArea nicht mit dem Buttonclick aktualisiert und der Alarm gibt eine leere/Null-Zeichenfolge. In anderen Browsern wird durch Klicken auf "set" jedoch "foo" angezeigt, was dann in der Warnmeldung angezeigt wird.

Weiß jemand, warum dies für diesen Browser spezifisch ist, oder was kann mit dem Code falsch sein? Ich habe meine Vermutungen über die .val()

Jede Hilfe wäre willkommen.

+0

Was passiert in IE6? – Lewis

+0

Hier ist Ihr Beispiel auf jsbin: http://jsbin.com/ivaso Ich habe IE6 nicht zur Hand, um es zu testen. – cgp

+0

versuchte es in IE6, funktioniert perfekt "wie es ist" –

Antwort

0

Ich denke, dass Sie .html() anstelle von .val() verwenden müssen ... Versuchen Sie zu sagen, was passiert ist?

+0

wenn ich .html() benutze es löscht alles vom Bildschirm und fügt den Code auf die neu leere Seite – kyassuru

+0

mit ein bisschen Basteln dies funktioniert, danke! – kyassuru

+4

Ich wünschte, du hättest im Detail erklärt, mit was du herumgespielt hast, um es zum Laufen zu bringen. Ich habe ein ähnliches Problem. –

1

sollten Sie rufen val() innerhalb der document.ready Veranstaltung:

$(document).ready(function() { 

    $('#hello').val("hi there"); 

}); 

Nur Dinge klar zu machen: Ich spreche nur über den ersten (global) Aufruf val(). Die Funktionsdeklarationen sollten nicht innerhalb der Funktion document.ready liegen.

+0

Solange das Skript nach dem Textarea geladen wird, sollte es in Ordnung sein, obwohl Ihr Punkt wahrscheinlich sowieso gültig ist. – cgp

+1

Ich hatte Probleme mit IE, auch wenn das Skript nach den HTML-Elementen geladen wird. –

0

Ich weiß nicht, warum Sie Code in IE6 nicht funktioniert, aber es ist nicht richtig jQuery. Ich kann nicht jetzt testen, aber dies sollte mit einigen Änderungen arbeiten:

<button type="button" id="setline">Set</button> 
<button type="button" id="showline">fire!</button> 

<textarea id="hello"></textarea> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#hello').val("hi there"); 

     $('#showline').click(function() 
     { 
      alert($('#hello').val()); 
     }); 

     $('#setline').click(function() 
     { 
      $('#hello').val('foo'); 
     }); 
    }); 

Buttons sollten nicht Onclick Ereignisse in jQuery haben Sie sollten sie binden oben gezeigt mag. Und immer document.ready verwenden!

+0

Mit onclick-Attributen ist nichts falsch, auch wenn jQuery verwendet wird. Natürlich ist es besser, die jQuery-Ereignisbehandlung zu verwenden, aber der "alte" Stil ist nicht unbedingt falsch. –

0

Haben Sie bei jeder Änderung mehr als ein Element mit der ID "Hallo"?

+0

nein das Programm besteht nur aus dem obigen Code. – kyassuru

+0

ok, aber der obige Code funktioniert in IE6. Versuchen Sie http://jsbin.com/ivaso (wie altCognito vorgeschlagen) –