问一个对我来说比较难的字符串问题

时间:2022-02-04 11:17:09
<script>
var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{

}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>
我想要的效果是,假如我在文本框里面输入文字"陈",下面的提示会出现陈先生陈女士,反正所有姓陈的都显示出来,同理其它姓也是,这个效果怎么实现啊?求大神回答,谢谢!

22 个解决方案

#1


问一个对我来说比较难的字符串问题只能使用JS,不要使用其它代码实现!

#2


还有一点,补充一下的,当我输入陈先生或陈先之后,陈女士在提示框哪里消失,然后只保留含有陈先生关键字的,其它也是这样!

#3


最后补充一点,字符串是在window.onload里面的,不过应该也没什么影响吧····

#4


你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

#5


硬要实现也可以,用reg.exec()方法

#6


引用 4 楼 qq_29594393 的回复:
你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

#7


把字符串变为数组 ,再用index of

#8


引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

#9


比如,var reg=/陈/g; var arr=null;
调用while(arr=reg.exec(str)!=null){
  arr[0]是完整关键词,arr.index是本次找到关键词出现的起始下标
在里面判断reg的长度,如果为1,就str.substr(arr.index,3);如果长度2就选2,长度3就1。然后将抓取的子字符串保存起来就哦了
}
reg自己去用input.onkeyup动态获取,

#10


引用 8 楼 weixin_36771189 的回复:
Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

#11


引用 10 楼 JS_weifeng的回复:
Quote: 引用 8 楼 weixin_36771189 的回复:

Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

这个功能叫搜索建议,也是ajax的典型应用,不用动态获取数据的时候,原生js是完全可以实现的

#12


引用 10 楼 JS_weifeng的回复:
Quote: 引用 8 楼 weixin_36771189 的回复:

Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

jq里有个ui插件,这种常用的写起来又比较繁琐的功能,插件都会封装,你只要按照他规定的格式写,几行代码就搞定,工作中能用就赶紧用,如果是学习的话,可以试试自己手写

#13



<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

#14


搜一下自动完成,一般都是JSON格式的,你贴的字符串连个分隔符都没有,程序处理起来困难

#15


这个只能用在3个字的情况下

<html>
<head>
<script>
    var str = '陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload = function() {
        var oTxt = document.getElementById('txt1');
        var oTips = document.getElementById('tips');
        oTxt.onkeyup = function() {
var val = this.value;
var len = 3 - val.length;
oTips.innerHTML = "";
if(len < 3){
var reg = new RegExp(val + ".{" + len + "}", "mg");
var match = str.match(reg);
if(match)
oTips.innerHTML = match.join();
}
}
    }
</script>
</head>
<body>
    姓名: <input id="txt1" type="text" /> <br />
    提示:<span id="tips"></span>
</body>
</html>

#16


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var surname=oTxt.value;
            var index=str.indexOf(surname);
            if(index!=-1)  //未找到的时候返回-1
            {
                var sirName=str.substr(index,3);
                var missName=str.substr(index+3,3);
                //console.log(missName);
                oTips.textContent=sirName+missName;
            }

        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>
 没修改你其他代码的情况下,感觉更好的还是ajax读数据库的数据更多。

#17


如果你给的字符串没那规律的还是用楼上的正则好点。

#18


引用 13 楼 jslang 的回复:

<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

这个好像不行吧

#19


引用 16 楼 zshdd 的回复:
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var surname=oTxt.value;
            var index=str.indexOf(surname);
            if(index!=-1)  //未找到的时候返回-1
            {
                var sirName=str.substr(index,3);
                var missName=str.substr(index+3,3);
                //console.log(missName);
                oTips.textContent=sirName+missName;
            }

        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>
 没修改你其他代码的情况下,感觉更好的还是ajax读数据库的数据更多。

对啊,字符串里面的内容就是在文本里面的,我是想用AJAX实现的,请问怎么使用AJAX实现?你这个好像也不行吧,只能检测到前面的。

#20


- -。后面的不是重复了 吗  
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var xhr=new XMLHttpRequest();
            var surname=oTxt.value;
            xhr.open("get","a.php?surname="+surname);//用php测试
            xhr.send();
            xhr.onreadystatechange= function () {
                if(xhr.readyState==4&&xhr.status==200)
                {
                    //console.log(xhr.responseText);
                    oTips.textContent=xhr.responseText;
                }
            }



        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>


PHP 代码
<?php
if($_GET)
{
    if(isset($_GET["surname"]))
    {
        $surname=$_GET["surname"];
        $dbh=mysqli_connect("localhost","root","root","test");
        $SQL_QUERY_NAME="select name from t_name where name LIKE $surname%";
        $dbh->query("set charaset utf8");
        $rs= $dbh->query("SELECT * FROM t_name");
        //$row=$rs->fetch_assoc();
        while($row=$rs->fetch_assoc())
        {
            echo  $row["name"];
        }
    }
}



create table t_name
(
 id int not null auto_increment primary key,
 name char(50) not null
)


要统一下编码。。不然会乱码  。。。


#21


php发错了 问一个对我来说比较难的字符串问题  那个是测试能否读到数据
if($_GET)
{
    if(isset($_GET["surname"]))
    {
        $surname=$_GET["surname"];
        $dbh=mysqli_connect("localhost","root","root","test");
        $SQL_QUERY_NAME="select name from t_name where name LIKE $surname%";
        $dbh->query("set charaset utf8");
        $rs= $dbh->query( $SQL_QUERY_NAME);
        //$row=$rs->fetch_assoc();
        while($row=$rs->fetch_assoc())
        {
            echo  $row["name"];
        }
    }
}
  

#22


引用 18 楼 JS_weifeng 的回复:
Quote: 引用 13 楼 jslang 的回复:


<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

这个好像不行吧

自传不行了

#1


问一个对我来说比较难的字符串问题只能使用JS,不要使用其它代码实现!

#2


还有一点,补充一下的,当我输入陈先生或陈先之后,陈女士在提示框哪里消失,然后只保留含有陈先生关键字的,其它也是这样!

#3


最后补充一点,字符串是在window.onload里面的,不过应该也没什么影响吧····

#4


你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

#5


硬要实现也可以,用reg.exec()方法

#6


引用 4 楼 qq_29594393 的回复:
你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

#7


把字符串变为数组 ,再用index of

#8


引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

#9


比如,var reg=/陈/g; var arr=null;
调用while(arr=reg.exec(str)!=null){
  arr[0]是完整关键词,arr.index是本次找到关键词出现的起始下标
在里面判断reg的长度,如果为1,就str.substr(arr.index,3);如果长度2就选2,长度3就1。然后将抓取的子字符串保存起来就哦了
}
reg自己去用input.onkeyup动态获取,

#10


引用 8 楼 weixin_36771189 的回复:
Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

#11


引用 10 楼 JS_weifeng的回复:
Quote: 引用 8 楼 weixin_36771189 的回复:

Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

这个功能叫搜索建议,也是ajax的典型应用,不用动态获取数据的时候,原生js是完全可以实现的

#12


引用 10 楼 JS_weifeng的回复:
Quote: 引用 8 楼 weixin_36771189 的回复:

Quote: 引用 6 楼 JS_weifeng的回复:
Quote: 引用 4 楼 qq_29594393 的回复:

你这种数据格式,玩个屁。你想要实现的功能是一个autocomplete 自动补全。
http://www.runoob.com/jqueryui/example-autocomplete.html
已经有现成的

求完整代码!

你查查,reg.exec()方法,可以解决你的问题,但是总感觉你这题是为了出题而出题,实际这种数据是不会看见的。

像百度搜索,淘宝等,在里面输入一些字,他就会自动提示和这个相关的信息,其实我那些数据是在ajax里面的,取出来的时候是字符串的形式存在,就这样引发了这样的一个问题。他说JQ可以,但是我还没深入了解JQ,所以问问而已。

jq里有个ui插件,这种常用的写起来又比较繁琐的功能,插件都会封装,你只要按照他规定的格式写,几行代码就搞定,工作中能用就赶紧用,如果是学习的话,可以试试自己手写

#13



<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

#14


搜一下自动完成,一般都是JSON格式的,你贴的字符串连个分隔符都没有,程序处理起来困难

#15


这个只能用在3个字的情况下

<html>
<head>
<script>
    var str = '陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload = function() {
        var oTxt = document.getElementById('txt1');
        var oTips = document.getElementById('tips');
        oTxt.onkeyup = function() {
var val = this.value;
var len = 3 - val.length;
oTips.innerHTML = "";
if(len < 3){
var reg = new RegExp(val + ".{" + len + "}", "mg");
var match = str.match(reg);
if(match)
oTips.innerHTML = match.join();
}
}
    }
</script>
</head>
<body>
    姓名: <input id="txt1" type="text" /> <br />
    提示:<span id="tips"></span>
</body>
</html>

#16


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var surname=oTxt.value;
            var index=str.indexOf(surname);
            if(index!=-1)  //未找到的时候返回-1
            {
                var sirName=str.substr(index,3);
                var missName=str.substr(index+3,3);
                //console.log(missName);
                oTips.textContent=sirName+missName;
            }

        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>
 没修改你其他代码的情况下,感觉更好的还是ajax读数据库的数据更多。

#17


如果你给的字符串没那规律的还是用楼上的正则好点。

#18


引用 13 楼 jslang 的回复:

<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

这个好像不行吧

#19


引用 16 楼 zshdd 的回复:
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var surname=oTxt.value;
            var index=str.indexOf(surname);
            if(index!=-1)  //未找到的时候返回-1
            {
                var sirName=str.substr(index,3);
                var missName=str.substr(index+3,3);
                //console.log(missName);
                oTips.textContent=sirName+missName;
            }

        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>
 没修改你其他代码的情况下,感觉更好的还是ajax读数据库的数据更多。

对啊,字符串里面的内容就是在文本里面的,我是想用AJAX实现的,请问怎么使用AJAX实现?你这个好像也不行吧,只能检测到前面的。

#20


- -。后面的不是重复了 吗  
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    var str='陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士魏先生魏女士陈先生陈女士周先生周女士郭先生郭女士艾先生艾女士李先生李女士严先生严女士吴先生吴女士'
    window.onload=function()
    {
        var oTxt=document.getElementById('txt1');
        var oTips=document.getElementById('tips');
        oTxt.onkeyup=function()
        {
            var xhr=new XMLHttpRequest();
            var surname=oTxt.value;
            xhr.open("get","a.php?surname="+surname);//用php测试
            xhr.send();
            xhr.onreadystatechange= function () {
                if(xhr.readyState==4&&xhr.status==200)
                {
                    //console.log(xhr.responseText);
                    oTips.textContent=xhr.responseText;
                }
            }



        }
    }
</script>

姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>

</body>
</html>


PHP 代码
<?php
if($_GET)
{
    if(isset($_GET["surname"]))
    {
        $surname=$_GET["surname"];
        $dbh=mysqli_connect("localhost","root","root","test");
        $SQL_QUERY_NAME="select name from t_name where name LIKE $surname%";
        $dbh->query("set charaset utf8");
        $rs= $dbh->query("SELECT * FROM t_name");
        //$row=$rs->fetch_assoc();
        while($row=$rs->fetch_assoc())
        {
            echo  $row["name"];
        }
    }
}



create table t_name
(
 id int not null auto_increment primary key,
 name char(50) not null
)


要统一下编码。。不然会乱码  。。。


#21


php发错了 问一个对我来说比较难的字符串问题  那个是测试能否读到数据
if($_GET)
{
    if(isset($_GET["surname"]))
    {
        $surname=$_GET["surname"];
        $dbh=mysqli_connect("localhost","root","root","test");
        $SQL_QUERY_NAME="select name from t_name where name LIKE $surname%";
        $dbh->query("set charaset utf8");
        $rs= $dbh->query( $SQL_QUERY_NAME);
        //$row=$rs->fetch_assoc();
        while($row=$rs->fetch_assoc())
        {
            echo  $row["name"];
        }
    }
}
  

#22


引用 18 楼 JS_weifeng 的回复:
Quote: 引用 13 楼 jslang 的回复:


<script>
var str='陈先生,陈女士,周先生,周女士,郭先生,郭女士,艾先生,艾女士,李先生,李女士,严先生,严女士,吴先生,吴女士,魏先生,魏女士';
window.onload=function()
{
var oTxt=document.getElementById('txt1');
var oTips=document.getElementById('tips');
oTxt.onkeyup=function()
{
if (oTxt.value=="") 
oTips.innerHTML = "";
else {
var arr = str.match(new RegExp("[^,]*"+oTxt.value+"[^,]*","ig"));
oTips.innerHTML = arr ? arr.join(" ") : "";
}
}
}
</script>
</head>

<body>
姓名:<input id="txt1" type="text" /><br />
提示:<span id="tips"></span>
</body>
</html>

这个好像不行吧

自传不行了