0

jquery オートコンプリート機能を使用して、フォームの他の入力フィールドの値を入力に渡したいと思います。いくつかの方法を試しますが、どれもうまくいきません。これが私がこれまでに持っているものの例です:

html:

<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" class="autofieldnames"/>
<input type="text" class="autofieldnames"/>

jquery:

$(".fieldname").each(function() {
  $(this).blur(function() {
    var fieldnames = $(".fieldname").map(function(){ return this.value; }).get();
    });
$(".autofieldnames").each(function() {
  $(this).autocomplete({ source: fieldnames });
  });

fieldnames 配列を手動で設定した場合 (つまり、fieldnames = ["aaa", "abc"];) オートコンプリートは機能しますが、何らかの理由で他のフィールドの値を配列に渡すことができません。

4

2 に答える 2

0

キーワードを使用varして変数を宣言すると、ローカル変数になります。つまり、それはそれfieldnamesを定義した関数に対してのみ表示され、それを読み取ろうとする関数には表示されないため、varキーワードを削除します。

ただし、fieldnamesは非常に一般的な名前であるため、グローバル変数にするべきではありません (非一般的な名前でグローバル変数を作成することも避けるべきですが、一般的な名前の変数ではさらに危険です)。したがって、ローカル変数として宣言する必要がありますが、それを必要とするすべての関数から見えるスコープ内で宣言する必要があります。

このようなもの:

$(function(){
        var fieldnames;
        $(".fieldname").each(function() {
                $(this).blur(function() {
                        fieldnames = $(".fieldname").map(function(){ return this.value; }).get();
                });
        });
        $(".autofieldnames").each(function() {
                $(this).autocomplete({ source: fieldnames });
        });
});
于 2012-11-07T21:21:36.720 に答える
0

解決しました。参考までに、これは私が思いついたものです:

html:
<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" class="fieldname"/>
<input type="text" onfocus="getfieldnames"/>
<input type="text" onfocus="getfieldnames"/>

jquery:
function getfieldnames(obj) {
  var fieldnames = $(".fieldname").map(function(){ return this.value; }).get();
  $(obj).autocomplete({ source: fieldnames });
  }
于 2012-11-08T19:31:15.410 に答える