简单的文本框输入自动提示

简单的文本框输入自动提示--输入的时候可以直接异步加载数据库中匹配的项,然后显示出来。

         这里没有使用到数据库,直接在PHP用数组模拟数据存储。

demo演示

原理主要是:

监听输入框的状态,当有改变的时候即刻通过ajax发送数据并取得返回值。

主要使用了jQuery封装很方便,但貌似我这个兼容性不咋地...主要提供个思路吧~

js部分:

<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript">
$(function(){ 
    $(":button").click(function() {
        /* Act on the event */
        if($(":input").val() != ""){ 
            alert("your name is " + $(":input").val());
        }
    });
    $(":input").bind("keyup",function(){ 
        $(".info").empty();
        if($(this).val() == "")  return;
    //    alert($("#name").val());
        $.ajax({ 
            type: 'get',
            url:    'Automatic_prompt_info.php',
            data: {name: $("#name").val()},
            success: function(data){ 
            //    alert(data);
                        var array = new Array();
                array = data.split(",");
                $(".info").append($("<ul></ul>"));
                for(var i=0;i<array.length-1;i++){
                    $(".info ul").append($("<li>"+array[i]+"</li>"));
                }
                
                $(".info ul").on("click",function(event){    //事件委托
                    $("#name").val($(event.target).text());
                    $(".info").empty();
                })
            }
        });
    });

});
</script>

顺便把html部分带上,免得不知哪个是哪个

    <style type="text/css">
    html,body,div,form,input,legend,label,button,ul,li{margin: 0;padding: 0;}
    form,fieldset{border: 0;}
    .wrap{position:relative;margin: 100px auto; width: 700px; height: 400px;overflow: hidden;}
    input{width: 300px; height: 36px; border: 3px solid green;border-radius: 3px;font-weight: bold;}
    button{width: 120px; height: 42px; border: 0;padding: 8px;margin-left:-10px;background-color: green;font-weight: bold;font-size:16px;color: white;cursor: pointer;border-radius: 30px;}
    .info{position: relative;top: -10px;left: 14px;width: 305px;}
    ul{list-style: none;}
    li{padding: 3px 10px; border-bottom: 1px dotted #333;background-color: #ddd; }
    li:hover{cursor: pointer;background-color: green;}
    </style>
</head>

<body>

    <div class="wrap">
    <h3>文本框文本自动提示(如输入fish  jack )</h3>
        <form name="form" method="get" action="">
            <fieldset>
            <label for="search"></label>
            <input type="text" name="name" id="name" placeholder="Input your name">
            <button type="button" id="button">search</button>
            </fieldset>
        </form>
        <div class="info">
        
        </div>
        
    </div>

php数据部分:

使用简单的正则匹配即可。

<?php
$names = array('adan','acos','acoss','apple','fish','fisher','fishers','jack','july','boy','boyee','girl','json');  // names
$name = $_GET['name'];  // name from input label
$str = "";
$counts = count($names);
for($i = 0;$i<$counts;$i++){ 
    if(preg_match("/^$name/", $names[$i])){    //find 
        $str .= $names[$i];
        if($i != $counts - 1)
            $str .= ",";
    }
}

//$data = array("A"=>$str)
//echo json_encode($data);     // send back info
echo $str;
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端儿

WampServer 给电脑搭建apache服务器和php环境

  前端不仅要做页面展示层,还负责着数据交互的部分,不要等到后端人员做好工作了前端才开始对接,那样太被动了。

1.1K10
来自专栏分布式系统进阶

记一次使用Zookeeper C API导致的内存泄漏

可以看到 definitely lost: 24 bytes in 1 blocks

33430
来自专栏前端儿

JS打开摄像头并截图上传

要注意的是,在chrome以外的浏览器中,使用摄像头或多或少会出现一些问题,可能也是老问题了,所以以下代码主要基于chrome使用

88110

使用Puppet模块创建LAMP堆栈

在Puppet中,模块是服务器配置的构建块。模块安装和配置包,创建目录,并生成用户在模块中包含的任何其他服务器更改。Puppet模块旨在执行特定任务的所有部分,...

16030
来自专栏前端儿

既之前的基础,先写个简单的PHP 与数据库 的数据交流

现在先不用 css 和 javascript     先用纯 html  php  写吧。 所以那些 嵌入式 <font  size=....  什么的看看就算...

14820
来自专栏前端儿

Web 后端--PHP 与数据库的交互

         用 PHP  操作 MySQL ,实现数据的交换,还要多练练....

16610
来自专栏前端儿

在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填...

63930
来自专栏Python疯子

iOS 之多个 button 的单选与多选

下面是实现的代码: 首先创建10个button(一个一个写太麻烦了,个人认为还是用一个 for 循环来创建比较好)

14310
来自专栏淡定的博客

markdown基础语法

9320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励