2012-09-07 39 views
3

当我使用jQuery添加<input>时,新的input的值被复制到页面的预先存在的输入中,刷新!当使用JavaScript或jQuery添加输入时,如果页面刷新,将其值复制到其他输入

运行这个页面在Firefox:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script src="Scripts/jquery-1.8.0.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $('<input />').attr({ 'type': 'text' }).val(2).appendTo($('#cart')); 
     }) 
    </script> 
</head> 
<body> 
    <div id="cart"> 
    </div> 
    <input type="text" id="afe" /> 
</body> 
</html> 


首次加载时,原input将是空白的,并通过jQuery的加入input将有2值。

现在按F5这两个输入将显示值2

发生了什么事?

回答

4

它看起来像Firefox的自动完成越来越困惑。 Chrome不会这样做。
请参阅jsfiddle.net/TAGkR

初始页面加载后,它看起来像这样在Firefox(15.01):

Input, fresh

刷新页面/ IFRAME,它看起来像这样!

input, stale

这可能是在Firefox中的错误。以下是一些可以解决此问题的方法:

  1. 将第一个输入设置为autocomplete="off"
    EG:<input type="text" id="afe" autocomplete="off" />

    参见this Fiddle

  2. 有没有jQuery在原来的物理后添加新的输入。
    EG:

    <input type="text" id="afe" /> 
    <div id="cart"> 
        <!-- JavaScript/jQuery inserts input here. --> 
    </div> 
    

    this Fiddle

+0

谢谢,自动完成关闭工作做得很好! – user1643870

+0

不客气。乐意效劳。 –

+0

@BrockAdams您应该将JSFiddle中的相关javascript放入您的答案中。答案应该是自给自足的。如果到JSfiddle的链接死亡(并且他们的链接已经死亡了很多),那么你的答案不再包含答案。 –

1

该问题仅适用于您的cart之后的<input>标签。每次刷新时,它会将它们的值更新为jQuery中的值。看看这个例子:http://jsfiddle.net/TAGkR/26/

我使用纯JavaScript,看看是否有可能是一些错误的jQuery尝试过,但这里看到了同样的错误仍然存​​在:http://jsfiddle.net/TAGkR/28/


编辑:在这点之下是我的旧的未知情的答案,但我会保留它以使下面的评论保持在上下文中。

我很不清楚你想完成什么。如果你想让新的文本框获取其他文本框的值,我只需要在当前的Javascript中包含val函数。

$(function() { 
    $('#afe').val(
    $('<input />').attr({ 
     'type': 'text' 
    }).val(2).appendTo($('#cart')).val()); 
})​;​ 

如果你想那么一段时间后获得的价值,我会得到这样的:

$(function() { 
    $('<input />').attr({ 
     'type': 'text' 
    }).val(2).appendTo($('#cart')); 

    $('#afe').val($('#cart input').val()); 
})​;​ 

如果你想澄清更多的我会很乐意回答。这正是我所描述的。

+0

其实,他是在报告小车行为,我刚刚重复了这个问题;更多在一个月。 –

+0

谢谢,我只是不想要这个马车行为。购物车是我正在制作的购物车,页面上的文本框是来自我的标题的搜索框。 – user1643870

+0

+1纯JS测试用例。为了评论的缘故,您不需要保留旧的答案!如果他们愿意的话,人们可以从编辑历史中分辨上下文。 –

相关问题