1

このトピックに関するすべての投稿を読み、多くの「解決策」を試しましたが、うまくいかないようです。

$(function () {

    var options = {
        source: [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            ],
        minLength: 2
    };  

    $('#btn_addline').on ("click", function () {

        // get existing line number and increment by one
        var linenum = parseInt ($('#numlines').val()) + 1;

        // update hidden numlines field with new value
        $('#numlines').val(linenum);

        // define new field names
        var line_field = 'report['+linenum+'][line]';
        var notes_field = 'report['+linenum+'][notes]';
        var contact_field = 'report['+linenum+'][contact]';

        var newLine = $('<tr> \
            <td><input name="'+line_field+'" id="'+line_field+'" type="text" size="2" maxlength="2" class="form" value="'+linenum+'" readonly="readonly" /></td> \
            <td><input name="'+notes_field+'" id="'+notes_field+'" type="text" size="96" maxlength="256" class="form" /></td> \
            <td><input name="'+contact_field+'" id="'+contact_field+'" onFocus="attach_autocomplete()" type="text" size="32" maxlength="32" class="form" value="test123" /></td> \
            </tr>');

        // append new line to table
        //$('#report_items').append(newLine);

        $('#report_items').append(newLine)
            .hide()
            .fadeIn('Normal', function() {
                $(this).find('#'+contact_field).val('test');
                //alert ($(this).find('#'+contact_field).val());
                alert (contact_field);
                alert ($('#'+contact_field).val());
            });

        //$('#'+contact_field).autocomplete(options);

    });
});

新しい HTML は適切に追加されますが、これらの要素にアクセスすることはできません。私はサイト全体でさまざまな提案を試みましたが、今はイライラしており、助けを求めています.

3 番目のアラート - alert ($('#'+contact_field).val());- は「未定義」を返します。

明確にするために、同様の質問のリストを徹底的に調べましたが、解決策は見つかりませんでした. 明らかな何かが欠けている可能性が非常に高いか、要素の追加とDOMへの影響との関係をよく理解していませんが、いずれにせよ、ここで本当に手を使うことができました.

乾杯。

4

1 に答える 1

2

問題は、セレクター内に特殊文字があることです。2 つのバックスラッシュでそれらをエスケープする必要があります\\

メタ文字 ( !"#$%&'()*+,./:;<=>?@[]^`{|}~ など) を名前のリテラル部分として使用するには、 2 つのバックスラッシュでエスケープする必要があります: \. たとえば、id="foo.bar" を持つ要素は、セレクター $("#foo\.bar") を使用できます。

ドキュメントを確認する

于 2013-05-14T07:40:35.213 に答える