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" />

    この Fiddleを参照してください。

  2. 元の入力の後に jQuery に新しい入力を物理的に追加させます。
    例えば:

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

    この Fiddleを参照してください。

于 2012-09-07T04:40:43.953 に答える
1

<input>この問題は、 の後にあるタグにのみ適用されますcart。更新のたびに一度に 1 つずつ、値を 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 に答える