我想将表单上其他输入字段的值传递给具有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”];)自动完成工作但由于某种原因无法将其他字段的值传递给数组。
答案 0 :(得分: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 });
});
});
答案 1 :(得分: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 });
}