我对这个 jQuery 代码有疑问:
$(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。
最佳答案
我不得不绞尽脑汁思考这个问题,因为这种警觉让我感到厌烦。为您的输入字段分配一些名称,当您进行克隆时,给它一个不同的名称,即+
var dummyInput = $('#search').clone()
.attr('id', 'search_watermark')
.val('Search query').attr( 'name', 'foo' );
Firefox会记住输入,与JS无关。如果您进行完全刷新(+Shift),它也应该清除您发布的示例中的输入。
关于jQuery 克隆() : Is this a bug with firefox or I am missing something,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1328282/