2009-08-25 3 views
4

Ich habe ein Problem mit diesem jQuery-Code:jQuery clone(): Ist das ein Fehler mit Firefox oder mir fehlt etwas

$(document).ready( 
    function(){ 
    alert($('#search').val()); 

    var dummyInput = $('#search').clone() 
    .attr('id', 'search_watermark') 
    .val('Search query') 

    $('#search').before(dummyInput); 
    } 
); 

$(window).unload(function(){ 
    $('#search_watermark').remove(); 
}); 

und den HTML-Code:

<form id='test_form' action='/test.php' method='post'> 
    <label>Create New Team</label><br/> 
    <input type='text' id='search' /> 
</form> 

Das Problem ist:

Wir weisen nur dem Klon des Eingabefeldes einen Wert zu, nicht dem eigentlichen Eingabefeld. Aber Sie werden feststellen, dass in Firefox beim Aktualisieren der Seite der Wert des tatsächlichen Eingabefeldes geändert wurde. Dieses Verhalten ist unerwartet.

Alle anderen Browser (außer FF) verhalten sich wie erwartet. Ich benutze FF 3.5 auf XP.

Antwort

3

Ich musste mein Gehirn um die Frage wickeln, weil die Alarm-Art mich abschreckte. Weisen Sie einige Namen zu Ihren Eingabefeldern und wenn Sie den Klon zu tun, geben Sie ihm einen anderen Namen, das heißt. +

var dummyInput = $('#search').clone() 
.attr('id', 'search_watermark') 
.val('Search query').attr('name', 'foo'); 

Firefox wird die Eingabe erinnert, hat es nichts mit JS zu tun. Wenn Sie eine vollständige Aktualisierung durchführen (+ Shift), sollten Sie die Eingabe aus dem von Ihnen geposteten Beispiel löschen.

+1

Vielen Dank :) Ich habe dem Klon einen Namen zugewiesen und es funktioniert jetzt gut. Aber ich habe immer noch nicht bekommen, was das Problem war. Ich verstehe, dass firefox erinnerte sich an den Wert des Eingabefeldes, aber wie hat Firefox zwischen den beiden Feldern verwirrt. Beide haben separate ID. – Varun

+0

Mit dem gleichen Problem konfrontiert, funktionierte die Änderung des Namens und der ID und des Werts des Eingabeelements nicht. –

0

Seitenaktualisierung bedeutet, dass die Seite neu geladen wird, sodass alle JavaScripts erneut ausgeführt werden und alle Variablen usw. verloren gehen, da die Seite erneut vom Server geladen wird. Also vielleicht erinnert sich Firefox an einige Werte oder so ähnlich ...

Verwandte Themen