我正在使用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);
});
}
可以实现几个性能优化,但是如果此处的性能不是问题,则应该可以。