2009-08-25 30 views
4

我有這個jQuery代碼的一個問題:的jQuery的clone():這是與Firefox的錯誤或者我失去了一些東西

$(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(); 
}); 

和HTML:

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

的問題是:

我們只將值賦給輸入字段的克隆,而不是實際的輸入字段。但是你會發現,在Firefox中,刷新頁面時,實際輸入字段的值已更改。這種行爲是意外的。

所有其他瀏覽器(FF除外)的行爲與預期相同。我在XP上使用FF 3.5。

回答

3

我不得不圍繞這個問題包裹我的大腦,因爲警報讓我失望。指定一些名字你輸入字段,當你做克隆,給它一個不同的名稱,即+

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

Firefox會記住輸入,它無關JS。如果您進行全面更新(+ Shift),它應該清除您發佈的示例中的輸入。

+1

非常感謝:) 我爲克隆指定了一個名稱,現在它的工作正常。 但我仍然沒有得到什麼問題。 我知道firefox記得輸入字段的值,但firefox怎麼會在兩個字段之間產生混淆。 兩者都有單獨的ID。 – Varun 2009-08-25 15:10:10

+0

面對相同的問題,更改輸入元素的名稱和id以及值不起作用。 – 2016-02-11 12:53:04

0

頁面刷新意味着頁面被重新加載,所以所有的JavaScript都會再次運行,所有的變量等都會丟失,因爲頁面是從服務器再次加載的。因此,也許Firefox會記住一些值或類似的東西...

相關問題