jQuery使用自动完成限制文本框输入

jQuery使用自动完成限制文本框输入,jquery,forms,jquery-ui,jquery-autocomplete,Jquery,Forms,Jquery Ui,Jquery Autocomplete,我正在使用jqueryui的autocomplete来传播表单的正确输入,其中包含1000多个变量 autocomplete可以正常工作,但是如何将字段的值限制为这些值呢 以以下形式自动完成代码: $('#animal').autocomplete({ source: "search_species.php", minLength: 3, select: function(event, ui) { $('#animal').val(ui.item.post

我正在使用jqueryui的autocomplete来传播表单的正确输入,其中包含1000多个变量

autocomplete可以正常工作,但是如何将字段的值限制为这些值呢

以以下形式自动完成代码:

$('#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);
正如我所说,自动完成是有效的。我只需要知道如何将文本字段中的值限制为搜索中的值,以便人们无法键入自己的值


提前谢谢。

有几种方法可以解决这个问题

一种方法是,如果没有从下拉列表中选择任何内容,则清除输入值,并在提交字段时强制该字段为非空。清除该值的一个好方法是在菜单更改或关闭时使用autocomplete事件,该事件名为。如果选择了某个项目,或输入失去焦点,则触发此事件。如果用户没有从菜单中选择项目,则
ui.item
值将为空,您可以清除输入中留下的键入值

您可以实现如下方法:

$('#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);
        },
        change: function(event, ui) {
            if(ui.item === null || !ui.item)
               $(this).val(''); /* clear the value */
        }
    });  

从这里可以直接在表单验证或您正在使用的任何内容中添加检查,要防止用户移动,除非选择了某个项目,请确保输入值不为空。

不确定是否可以阻止用户在输入中键入其他值,但可以阻止用户提交该值-将所有这些自动完成值存储在javascript数组中,当有人提交表单时,您可以对照这些值进行检查当doinng.submit(function(){})时,通过循环来确保它是其中的一个值。如果您只想让它们从特定值中进行选择,是否可以将其作为选择列表?唯一的问题是该列表包含大约1000个动物和相关代码。它适用于野生动物救援组织,所有成员都必须输入特定的动物来显示其野生动物代码。是否可以进一步向下筛选列表,或者您可以在.blur(function(){//see if values match})上调用一个函数,而不是执行。submit()视为
ui
始终为空,仅为保持一致性而包括在内,我很确定这不起作用。谢谢,
change
事件就是我的意思。它在模糊和
ui时触发。如果未选择任何内容,则项目
为空。更新。