2017-05-31 155 views
-2

代碼:onclick功能不起作用?

<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>"; 
?> 

在這段代碼中,我創建,所有學院都顯示自動完成框,當我KEYUP上輸入字段,但是當點擊任何大學則沒有去鏈接ie college-details.php。那麼,我該如何解決這個問題?請幫助我。

謝謝

+0

檢查錯誤控制檯。您沒有在PHP代碼中生成的HTML中正確設置引號。另外請注意,我建議你使用委託單擊事件處理程序而不是過時的'on *'事件屬性 –

+0

如果你想使用'onClick',爲什麼你在'a'元素中有一個'li'元素? –

+1

我認爲ajax函數中的'data'參數應該使用冒號而不是等號。即:'data:$(this).val()' – RamRaider

回答

1

似乎有在你college.php多個問題:

  1. 正常<李>應b Ë外<一個>,
  2. HREF等於「#」,在某些情況下會導致瀏覽器加載/重新加載頁面,因爲click事件也鼓泡,<一個>,

可以避免此兩種方式。

要麼替換HREF = '#' 與HREF = '的javascript:無效(0)'

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

或取消事件冒泡並通過返回假執行中的onClick的<一個>標籤的默認行爲。

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

最壞的情況scenaro如果你不能編輯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."');

+0

Thanx @viacheslav – randy

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>"; 
?> 
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. 
+0

提出一些解釋。 – purvik7373