2017-05-31 4 views
-2

Code:onclick Funktion funktionieren nicht?

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

In diesem Code, den ich ein Autocomplete-Feld erstellt haben, in dem alle Hochschulen anzeigt, wenn ich auf Eingabefeld keyUp aber wenn auf beliebiges College es dann nicht gehe zum Link dh college-details.php. Also, wie kann ich dieses Problem beheben? Bitte helfen Sie mir.

Danke

+0

Überprüfen Sie die Konsole für den Fehler beheben. Sie setzen die Anführungszeichen nicht korrekt in den HTML-Code, den Sie im PHP-Code generieren. Beachten Sie auch, dass ich Ihnen vorschlagen würde, statt der veralteten Ereignisattribute einen delegierten Click-Event-Handler zu verwenden. –

+0

Warum haben Sie ein 'li'-Element in einem' a'-Element, wenn Sie 'onClick' verwenden möchten? –

+1

Ich denke, das Argument "Daten" in der Ajax-Funktion sollte einen Doppelpunkt anstelle eines Gleichheitszeichens verwenden. zB: 'data: $ (this) .val()' – RamRaider

Antwort

1

Es scheinen mehrere Probleme in Ihrem college.php zu sein:

  1. normalerweise <li> sollte b e außerhalb <ein>,
  2. href gleich zu „#“, die in einigen Fällen verursacht Browser eine Seite zu laden/neu geladen und Click-Ereignis, da auch <ein>, perlt

Sie können dies vermeiden zwei Wege.

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

oder abbrechen Ereignis sprudeln und Ausführen von Standardverhalten von <einen> Tag in onClick falsch durch die Rückkehr:

Entweder href = '#' mit href = 'void (0) javascript' ersetzen.

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

Worst case scenaro, wenn Sie die college.php nicht bearbeiten können, dann window.event.preventDefault(); zu selectCollege add() Funktion:

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(); 
} 

Es gibt auch einen anderen Fehler: selectCollege('".$college_name."''".$field."'); generiert Code selectCollege('Some college name''Some field');, die zwei Apostrophe enthält in einer Reihe gehen. Es scheint, Sie selectCollege('Some college nameSome field'); wollte, also eigentlich sollte man auch den Code selectCollege('".$college_name.$field."'); oder selectCollege('".$college_name."'+'".$field."');

+0

Danke @viacheslav – randy

1

ersetzen

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

Mit

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

Geben Sie einige Erklärung. – purvik7373

Verwandte Themen