2011-02-17 88 views
0

我正在写一个自动完成表单,其中包含多种类型的数据。在jQuery选项参数中添加字符串

在HTML,数据类型通过使用该密钥属性分隔:

<input type="text" name="data0" value="" size="20" id="data0" key="country"/> 
<input type="text" name="data1" value="" size="20" id="data1" key="state"/> 

在JS文件,我运行输入通配符选择和使用自动完成这种方式:

$(function() { 
$(":input").autocomplete({ 
    source: "query.php?type="+$(this).attr("key")+"&mode=1", 
    minLength: 2 
}); 
}); 

但它不起作用。

我想知道,如果它是由于.attr()选择,所以我写了另一个代码进行测试:

var test="state"; 
$(function() { 
$(":input").autocomplete({ 
    source: "query.php?type="+test+"&mode=1", 
    minLength: 2 
}); 
}); 

也不起作用。

非常感谢您的帮助!

编辑:

$(function() { 
$(":input").autocomplete({ 
    source: "query.php?type=state&mode=1", 
    minLength: 2 
}); 
}); 

这会工作。所以我相信这不是选择器问题。

+0

您使用了哪个自动完成插件? – sdleihssirhc 2011-02-17 05:24:17

+0

@sdleihssirhc在jqueryui中提供的一个,并且修改为使用POST。 http://forum.jquery.com/topic/jquery-autocomplete-new-parameter-implemented-method-get-post – rickypai 2011-02-17 05:36:07

回答

1
$(function() { 
$(":input").autocomplete({ 
    source: "query.php?type="+$(this).attr("key")+"&mode=1", 
    minLength: 2 
}); 
}); 

将不起作用,因为this没有指出你的想法。你可以这样做...

$(":input").each(function() { 
    $(this).autocomplete({ 
    source: "query.php?type="+encodeURIComponent($(this).attr("key"))+"&mode=1", 
    minLength: 2 
    }); 
}); 

你也应该编码上面的参数,就像我为你做的那样。