我使用ajax(xmlhttp)为我的表做了一个过滤器。下面是我的select2.php代码,这是我从数据库中获取表格的php代码。
<?php
$connect = mysqli_connect("localhost", "root", "","test1");
$q= $_GET['q'];
$v= $_GET['v'];
$output = "<table border='5' id='info' align = 'center'>
<tr>
<th><Font SIZE=5>Name</th>
<th><Font SIZE=5>Number</th>
<th><Font SIZE=5>Status</th>
</tr>";
if($v == "" && $q == "" )
{
$sql = "SELECT Name, Number, Status FROM particulars";
$result = mysqli_query($connect, $sql);
while($row= mysqli_fetch_array($result))
{
$name = $row['Name'];
$number = $row['Number'];
$status = $row['Status'];
$output .= "<tr height='50'> <td value='$name' class='crmname'>$name</td>"
. "<td height='50'>$number</td>"
. "<td height='50'>$status</td>"
. "</tr>";
}
}
else
{
if($q == "")
{
$sql = "SELECT Name, Number, Status FROM particulars WHERE Name LIKE '%$v%'";
}
else
{
$sql = "SELECT Name, Number, Status FROM particulars where Name like '%$v%' and status = '$q'";
}
and Status = '$q'"
$result = mysqli_query($connect, $sql);
while($row= mysqli_fetch_array($result))
{
$name = $row['Name'];
$number = $row['Number'];
$status = $row['Status'];
$output .= "<tr height='50'> <td value='$name' class='crmname'>$name</td>"
. "<td height='50'>$number</td>"
. "<td height='50'>$status</td>"
. "</tr>";
}
}
$output.="</table>";
echo $output;
mysqli_close($connect);
?>
接下来是我的index.php表单,它将显示ajax函数。
<script>
function crmsearch(strings)
{
var b = strings;
var c = document.getElementById("status");
var a = c.options[c.selectedIndex].text;
if(b == null || b == "")
{
b = "";
}
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp = new XMLHttpRequest();
}
else
{
// code for IE6, IE5
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("inputtable").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","select2.php?q="+a+"&v="+b,true);
xmlhttp.send();
}
</script>
这些是我的文本框过滤器和下拉框实时搜索的html代码
CRM
<input type="text" name="search_text" id ="search_text" style="float: right" placeholder="Name" onkeyup="crmsearch(this.value)" autocomplete="off">
<select name='status' id='status' onchange="crmsearch(search_text.value)">
<option value=""></option>
<option value="Interested">Interested</option>
<option value="Not Interested">Not Interested</option>
</select>
<span style="float: right; margin-right: 15px" class ="input-group-addon">Search</span>
<br>
</div>
</div>
目前我的所有代码都有效,除了我的下面的代码,它试图点击表格的第一列(名称)并获取我点击的单元格的名称。例如,如果我点击'Winson',我会将'Winson'存储到变量中并将其发送到另一个表单。我已经尝试了以下代码,但是在维尔。
<script>
var name;
$(document).ready(function()
{
$('#info tr .crmname').click(function()
{
name = $(this).text();
alert(name);
window.location = 'CV.php?name=' + name;
});
});
</script>
提前谢谢你:)
答案 0 :(得分:0)
您为每一行使用相同的元素ID。这会导致混淆DOM,因为id应该是唯一的。将#crmname更改为类,然后您可以使用如下选择器:
$('#info tr.crmname').click(function()
当您应该返回带有名称的第一个TD的文本时,您还将返回TR元素的文本。所以在第一个TR上放一个类,比如.name,这样你就可以在你的函数中做到这一点:
name = $('.name', this).text();
编辑: 如果你想点击TD元素然后把crmname类放在那里,但不是我在评论中提到的id。所以这样做:
$('#info tr .crmname').click(function()
其次,你的功能是否正常工作?您是否可以添加警报作为功能的第一部分,以确保它正常工作?所以:
$('#info tr .crmname').click(function()
{
alert('debug');
});