【问题标题】:my websites search results are immune to jquery我的网站搜索结果不受 jquery 的影响
【发布时间】: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 代码...
  • 暂时不要介意这个漏洞......但是谢谢

标签: php jquery html search


【解决方案1】:

试试这个

$('body').on('click','a',function(){
      $("#myDiv").toggle();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2011-04-03
    • 2011-04-22
    • 1970-01-01
    • 2012-06-08
    • 2011-09-25
    相关资源
    最近更新 更多