【发布时间】:2014-04-25 08:29:53
【问题描述】:
我有一个网站,我可以在其中搜索数据库中的东西,现在就让它成为船吧。
我用这个表格
<form method="post" action="">
<input type="text" class="form-control" id="searchField" name="searchField" autocomplete="off"/>
</form>
<div id="searchResults"></div>
这个jquery来显示搜索结果
//Autocomplete search field
$("#searchField").keyup(function(){
var input = $("#searchField").val();
$("#searchResults").html("");
input = $.trim(input);
if(input){
$.post( "source/pages/processing/search_boats.php", {inputString:""+input+""}, function( data ) {
$( "#searchResults" ).html( data );
});
}
});
search_boats.php 如下所示:
<?php
$input = $_POST['inputString'];
$sql = mysqli_query($dbcon, "SELECT boat_name FROM boats WHERE boat_name LIKE '%".$input."%' ORDER BY boat_name LIMIT 5 ");
echo "<ul id='searchUL'>";
while($row = $sql -> fetch_array()){
?>
<div class="row">
<div class="col-md-4">
<a href="#" onclick="return displayRest();"><? echo $row['boat_name']?></a>
</div>
</div>
<?
现在这个工作完美 - 就像我想要的那样。但是,当这些搜索结果出现在网站上时,我无法在它们上添加任何点击事件。我试过制作按钮,锚。我怀疑 jquery 还没有准备好这个添加的搜索结果,我取代了用户。例如,我可以在单击任何锚标记时隐藏一个名为 myDiv 的 div
像这样..
$("a").click(function(){
$("#myDiv").toggle();
});
但是当我点击搜索结果上的锚点时,myDiv 并没有被隐藏。
可能是什么问题?
【问题讨论】:
-
你需要使用Event Delegation - 比如
$('#searchResults').on('click', 'a', function(){$("#myDiv").toggle();}) -
试试
$(document).on("click", "a", function() { -
另一段易受 SQL 注入攻击的 PHP 代码...
-
暂时不要介意这个漏洞......但是谢谢