我正在使用javascript搜索功能。

function searchbrand(){
    var searchTxt = $("input[name='brandid']").val();
    $.post("search-brand-vw.php", {searchVal: searchTxt})
    .done(function(brandlist) {
        $("#brandlist").html(brandlist);
    });

}


在这里,我将输入框的值发送到单独的php文件。因此,在此页面中,我正在从mysql数据库中填充一个表。因此,有许多brandid字段。对于表的第一行,搜索将按预期进行。但是,当第一行中有一个值,而当我在第二行中进行搜索时,它也从第一行中获取值。如何仅在输入的行上获取值。仅供参考,每行中都有一个名为DL_Id的字段,该字段是唯一的。如何在此行中使用此值,也许使用AND子句?

var searchTxt = $("input[name='brandid']").val();


这就是我从数据库循环的方式

$query=mysqli_query($link,"SELECT * FROM dl_commfactory_2 LIMIT 35");
while($row = mysqli_fetch_array($query)){
    $dlid = $row['DL_Id'];
    $brandid = $row['Brand_Id'];
    ?>
    <tr>
    <td><input type="text" name="dlid" readonly value="<?php echo $dlid; ?>" size="2"></td>
    <td><input type="text" name="brandid" value="<?php echo $brandid; ?>" list="brandlist" id="output" onkeyup="searchbrand()" >
    <datalist id="brandlist" name="taskoption">
        <option> </option>
    </datalist> </td>
    <?php } ?>

最佳答案

首先,将对searchBrand()的调用更改为searchBrand(this),以便将要编辑的元素发送到函数。

然后,相应地更改searchBrand函数:

function searchBrand(el){
    var brandIdElement = $(el); //The element being edited
    var searchTxt = brandIdElement.val(); //The new value sent
    var searchTxtDL = brandIdElement.parents('tr').find('input[name="dlid"]').val(); //The dlid element's value in the same line

    //Send the value of the dlid too
    $.post("search-brand-vw.php", {searchVal: searchTxt, searchValDL: searchTxtDL})
    .done(function(brandlist) {
        //Get the brandList element for the specific line
        var brandListEl = brandIdElement.parents('tr').find('datalist[name="taskoption"]');
        brandListEl.html(brandlist);
    });

}


可以实现几个性能优化,但是如果此处的性能不是问题,则应该可以。

08-28 06:33