【发布时间】:2012-12-09 21:44:45
【问题描述】:
我正在使用 jQuery UI 的自动完成功能来尝试为表单传播正确的输入,其中包含超过 1000 个值。
自动完成功能正常,但如何将字段的值限制为这些值?
表单中的自动完成代码:
$('#animal').autocomplete({
source: "search_species.php",
minLength: 3,
select: function(event, ui) {
$('#animal').val(ui.item.postcodes);
$('#code').val(ui.item.code);
$('#family').val(ui.item.family);
}
});
自动完成源代码:
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);
$return_arr = array();
if ($conn){
$fetch = mysql_query(
"SELECT * FROM animals where animals like '%" . mysql_real_escape_string($_GET['term']) . "%'"
);
/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
$row_array['id'] = $row['id'];
$row_array['value'] = $row['animals'];
$row_array['family'] = $row['family'];
$row_array['code'] = $row['code'];
array_push($return_arr,$row_array);
}
}
mysql_close($conn);
echo json_encode($return_arr);
正如我所说,自动完成功能有效。我只需要知道如何将文本字段中的值限制为搜索中的值,这样人们就无法输入自己的值。
提前致谢。
【问题讨论】:
-
不确定您是否可以阻止人们在输入中输入另一个值,但您可以阻止人们提交它 - 将所有这些自动完成值存储在 javascript 数组中,当有人提交表单时,您可以检查这些值值以确保它是其中之一,方法是在执行 .submit(funciton() {}) 时通过它循环来确保它是其中之一
-
唯一的问题是该列表包含大约 1000 种动物和相关代码。它适用于野生动物救援组织,所有成员都必须输入特定的动物才能显示其野生动物代码。
-
是否可以进一步过滤列表,或者您可以在 .blur(function(){ //查看值是否匹配 }) 上调用函数而不是执行 .submit()
标签: jquery forms jquery-ui jquery-autocomplete