我对此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),则也应从您发布的示例中清除输入。

09-10 05:38
查看更多