如何使用jquery实现像ctrl + f这样的搜索

时间:2017-01-31 10:04:51

标签: javascript php jquery html search

您好我正在尝试在table tbody页面上进行搜索,搜索应该像ctrl + F一样搜索我的html和php代码:

请参阅下面链接的图片和链接。

    <table>
    <thead>
    <tr><td><input type="text" placeholder="Search Student id="searchStudent"> </td>
    <td></td><td></td><td></td><td></td><td></td></tr>
    </thead>

    <tbody>
    <tr>
    <td>
     <span><img src="<?php echo $gdScoreData['profile_pic']; ?>"/></span>
        <p><?php echo $gdScoreData['student_fname'];?> <?php echo $gdScoreData['student_lname'];?></p>
<p><b>Hallticket</b> : S<?php echo $gdScoreData['student_pid']; ?>J<?php echo $jobID; ?></p>
         </td>
    <td></td><td></td><td></td><td></td><td></td></tr>

第1个tr将在这里关闭php代码是html中的上面一个,它看起来如图所示:

<tr><td><span><img src="profile_pic/first_1479536519.jpg" width="50" /></span><p>Robert Smith</p><p><b>Hallticket</b> : S27J2</p></td></tr>
</tbody>
</table>

这是我的javascript代码搜索,如ctrl + F

/* Search Student like ctrl+f start */
$("#searchStudent").on("keyup", function() {
    var value = $(this).val();
    console.log(value);
    $("table tbody tr").each(function(index) {
        if (index !== 0) {

            $row = $(this);

            var id = $row.find("td:first").text();

            if (id.indexOf(value) !== 0) {
                $row.hide();
            }
            else {
                $row.show();
            }
        }
    });
});
/* Search Student like ctrl+f end*/

enter image description here

以下是我尝试的来源: Source JS

3 个答案:

答案 0 :(得分:5)

我现在修改了你的js小提琴代码jsfiddle.net/rFGWZ/3406/

       $("#search").on("keyup", function() {
        var value = $(this).val();
       if(value!='') {
           $("table tbody tr").hide();
       }else{
           $("table tbody tr").show();
       }
         $('table tbody tr td:contains("'+value+'")').parent('tr').show(); 
       });

答案 1 :(得分:1)

基本上,您的代码正在运行,但它不会在您的代码中拾取元素 尝试添加以下内容:

var id2 = $row.find("b:first").text();

并改变这个:

if (id2.indexOf(value) !== 0) {

然后根据粗体内容进行搜索,它应该可以正常工作

您可以这样尝试并分别搜索每个部分:

$id = $row.find("td:first");
var id2 = $id.find("b:first").text();
var id3 = $id.find("p:first").text();
if (id2.indexOf(value) !== 0 && id3.indexOf(value) !== 0) {

答案 2 :(得分:0)

$("#searchStudent").on("keyup", function() {
    var value = $(this).val();
    if(value!='') {
        $("table tbody tr").hide();
        }else{
        $("table tbody tr").show();
    }
    $('table tbody tr td:contains("'+value+'")').parent('tr').show(); 
});

我已经解决了这个问题。