質問

私は、「行を追加」ボタンを持つテーブルを持っています。このボタンは、jQueryを使って動的に行を追加します。これは、最初のコピーを...そして=すべてのIDを交換する「..」インクリメント数とすることによって動作します。

問題は、行は次のようなYUIオートコンプリートを持っているということです。

<td>
    <input type="hidden" name="location_num[0]" value="508318" maxLength="25" style="width:230px" id="location_num[0]"/>
    <input type="textbox" name="location_numDisplayDesc[0]" value="WINNIPEG" maxLength="25" style="width:230px" id="location_numDisplayDesc[0]"/>
    <div id="Container_location_num[0]" style="display:inline;"></div>

    <script type="text/javascript">

        // Initialize autocomplete
        var location_numAC = new YAHOO.widget.AutoComplete(
            "location_numDisplayDesc[0]",
            "Container_location_num[0]",
            locationDataSource,
            acConfig);

        location_numAC.useShadow = true
        location_numAC.useIFrame = true
        location_numAC.dataErrorEvent.subscribe(acErrorFunction);

        // Format results to include the reference number
        location_numAC.formatResult = function(resultItem, query) {
            return resultItem[0];
        };

        // Clear key before request
        location_numAC.dataRequestEvent.subscribe(function fnCallback(e, args) {
        YAHOO.util.Dom.get("location_num[0]").value = ""; });

        // Set key on item select
        location_numAC.itemSelectEvent.subscribe(function(event, args) {
            YAHOO.util.Dom.get("location_num[0]").value = args[2][1];
        });

        // Clear key when description is cleared
        location_numAC.textboxBlurEvent.subscribe(function fnCallback(e, args) {
            if (isEmpty(YAHOO.util.Dom.get("location_numDisplayDesc[0]").value)) {
                YAHOO.util.Dom.get("location_num[0]").value = "";
            } // end if
        });
    </script>
</td>

このコードは、Firefoxで正常に動作し、新しく作成されたオートコンプリートは動作しますが、IE(6&7)に私がlocation_num_ACが正常に作成されていないことを意味し、エラーを取得しています。私はそれが必要として、それは新たに作成された入力またはdiv要素を読んでいないことからだと考えています。私はJavaScriptをラップしようとしました。

$("Container_location_num[0]").ready(function {...});

それが動作していないようでした。誰もが任意の他のアイデアを持っていますか?

役に立ちましたか?

解決

ご想像のとおり、

IEでDOMに挿入されたフォームフィールドはフォームのコレクションに追加しないでください。

通常は、フォームフィールドの2つの方法のいずれかを参照することができます:

document.forms[0]["myFormName"];
document.forms[0][12];

これは、そのフォームフィールドの名前またはそのインデックスで、です。しかし、あなたはのときは、 IEでDOMにのフォームフィールドを追加しないの唯一のインデックスで、名前で参照することができます。あなたのコード(または任意のサポートコード)がその名前でコレクション内のフォームフィールドを探している場合は、明らかに問題を持っています。

あなたの唯一のキーが名前である場合は、

あなたはインデックスですべてのフォームフィールドをループすることができますし、あなたが探しているものを見つけるが、それは明らかにリニア動作になるだろう。あなたはまた、ループスルーとをフォームフィールドは、名前によって数値的にではなく、索引付けされた見つけ、フォームが自分自身をオブジェクト更新することができます。

私はこのプロジェクトで発生しているか(または場合)を知るために十分な詳細を持っていないが、それはそれはあなたが動的にフィールドを追加しているので、役割を果たしている可能性がありますように聞こえるものをIEの癖の一つです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top