0

ページにいくつかの入力ボックスがあり、すべてオートコンプリート クラスがあり、それぞれの下に、オートコンプリートの結果を追加する div があります。ただし、クラスの div に追加するだけだとすると、最も近い div ではなく、最初の div だけが実行されます。これを修正するためにいくつかのJavaScriptをまとめようとしましたが、レンガの壁にぶつかり、同じエラーが発生し続けました. 提供できるヘルプをいただければ幸いです。

これが私のJavaScriptです:

<script type="text/javascript">
$(document).ready(function () {
    var div_id;
    $("input.autocomplete").autocomplete({
        set: div_id = $(".autocomplete").keyup(function () {
            $('.autocomplete').closest('div').find('.container').attr('id');
        }),
        appendTo: div_id,
        source: function (request, response) {
            $.ajax({
                url: '/Home/GetUsers',
                type: "POST",
                dataType: "json",
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item, value: item };
                    }));
                }
            });
        }
    });
})      
</script>

ビューは次のようになります。

Employee Name (Team Leader): <input type ="text" name="empName1" class="autocomplete"/>
    <div class ="container"  id = "container0"></div>
    <br/>
    <br/>
    Employee Name (Event Process Owner): <input type ="text" name="empName2" class="autocomplete"/>
    <div class ="container" id = "container1"></div>
    <br/>
    <br/>
    Employee Name (Sponsor): <input type ="text" name="sponsor" class="autocomplete"/>
    <div class ="container" id = "container2"></div>
    <br/>
    <br/>
    Employee Name: <input type ="text" name="empName3" class="autocomplete"/>
    <div class ="container" id = "container3"></div>
    <br/>
    Employee Name: <input type ="text" name="empName4" class="autocomplete"/>
    <div class ="container" id = "container4"></div>
    <br/>

プロジェクトを開始しようとすると、「Microsoft JScript ランタイム エラー: メソッドまたはプロパティ アクセスへの予期しない呼び出し」というエラーが表示されます。このエラーが発生すると、jquery.min.js (1.8.3) でこれが強調表示されます。

this.appendChild(e)
4

2 に答える 2

0

この行を変更

$('.autocomplete').closest('div').find('.container').attr('id');

$('.autocomplete').next("div").attr("id"));

良いはずです。

于 2013-04-22T13:49:05.790 に答える
0

これを試して:

HTML

data container idに追加input box

Employee Name (Sponsor): 
<input type ="text" name="sponsor" data-container_id="container2" class="autocomplete" />
<div class ="container" id = "container2"></div>

今すぐスクリプトで

$("input.autocomplete").autocomplete({
    appendTo: $('#'+$(this).data('container_id')),//it will give you container-id
    ....
    ....
于 2013-04-22T13:49:58.823 に答える