onclick功能不起作用?

时间:2017-05-31 07:25:21

标签: php jquery

代码:

<input type="text" name="college_name" id="college_name" placeholder="Search By College Name" >
<div id="box"></div>
<script>
    $(document).ready(function() {
        $("#college_name").keyup(function() {
            $.ajax({
                type: "POST",
                url: "colleges.php",
                data: 'keyword=' + $(this).val(),
                success: function(data) {
                    $("#box").show();
                    $("#box").html(data);
                }
            });
        });
    });

    function selectCollege(val) {
        $("#college_name").val(val);
        college_name = $("#college_name").val();
        location.href = "college-details.php?college_name=" + college_name;
        $("#box").hide();
    }
</script>

college.php

<?php
   $tempcollege .= "<a href='#' style='color:#fff;'><li onClick=selectCollege('".$college_name."''".$field."');>".$college_name.$field."</li></a>";
?>

在这段代码中,我创建了一个自动完成框,当我在输入字段上键入时,所有大学都会显示,但是当点击任何大学时,它就不会链接到,即college-details.php。那么,我该如何解决这个问题?请帮助我。

谢谢

3 个答案:

答案 0 :(得分:1)

替换

<?php
$tempcollege .= "<a href='#' style='color:#fff;'><li onClick=selectCollege('".$college_name."''".$field."');>".$college_name.$field."</li></a>";
?> 

使用

<?php
$tempcollege .= "<a href='#' style='color:#fff;'><li onclick=selectCollege('".$college_name."''".$field."');>".$college_name.$field."</li></a>";
?>

答案 1 :(得分:1)

你们大学里似乎有很多问题。

  1. 通常&lt; li&gt;应该在&lt; a&gt;,
  2. 之外
  3. href等于&#34;#&#34;,在某些情况下会导致浏览器加载/重新加载页面,因为点击事件也会冒泡到&lt; a&gt;,
  4. 你可以避免这两种方式。

    要么替换href =&#39;#&#39;使用href =&#39; javascript:void(0)&#39;

    <?php
        $tempcollege .= "<li onClick=selectCollege('".$college_name."''".$field."');><a href='javascript:void(0)' style='color:#fff;'>".$college_name.$field."</a></li>";
    ?>
    

    或取消事件冒泡并执行&lt; a&gt;的默认行为通过返回false来标记onClick。

    <?php
        $tempcollege .= "<li onClick=\"selectCollege('".$college_name."''".$field."'); return false;\"><a href='#' style='color:#fff;'>".$college_name.$field."</a></li>";
    ?>
    

    最糟糕的情况如果你不能编辑college.php,那么将window.event.preventDefault();添加到selectCollege()函数:

    function selectCollege(val) {
        window.event.preventDefault();
        $("#college_name").val(val);
        college_name = $("#college_name").val();
        location.href = "college-details.php?college_name=" + college_name;
        $("#box").hide();
    }
    

    还有另一个错误:selectCollege('".$college_name."''".$field."');生成代码selectCollege('Some college name''Some field');,其中包含连续出现的两个撇号。您似乎想要selectCollege('Some college nameSome field');,所以您还应该将代码修改为selectCollege('".$college_name.$field."');selectCollege('".$college_name."'+'".$field."');

答案 2 :(得分:0)

    $tempcollege .= "<li><a onclick='callfunction();' style='color:#fff;'>click</a></li>";       
    When you set click event on <a> tag at time please remove href="#" attribute with href some cases causes browser reload a page and since click event  not work.