3

当我使用 jQuery 添加一个时,无论何时刷新页面<input>,新的值都会被复制到页面的预先存在的输入中!input

在 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文件为空白,inputjQuery 添加的值为2.

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

这是怎么回事?

4

2 回答 2

4

看起来 Firefox 的自动完成功能越来越混乱。Chrome 不这样做。
请参阅jsfiddle.net/TAGkR

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

输入,新鲜

但是刷新页面/iframe,它看起来像这样!

输入,陈旧

这可能是 Firefox 中的一个错误。以下是一些可以解决它的方法:

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

    看到这个小提琴

  2. 让 jQuery 在原始输入之后物理添加新输入。
    例如:

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

    看到这个小提琴

于 2012-09-07T04:40:43.953 回答
1

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

我尝试使用纯 Javascript 来查看 jQuery 是否可能存在一些错误,但同样的错误仍然存​​在,如下所示:http: //jsfiddle.net/TAGkR/28/


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

我非常不清楚您要完成什么。如果您试图让新文本框获取另一个文本框的值,我只会将 val 函数包装在您当前的 Javascript 周围。

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

如果您想澄清更多,我很乐意回答。这正是我从你描述的情况中得到的。

于 2012-09-07T03:13:13.690 回答