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 回答