我在定义函数时的错误在哪里?

时间:2016-12-29 09:35:42

标签: javascript php html wordpress

我想使用php和java进行即时搜索,但我不断收到此错误:

Uncaught ReferenceError: searchq is not defined at HTMLInputElement.onkeydown

所以我希望每次按下键都能激活一个函数,它会在数据库中搜索结果并将结果显示为div.I检查所有内容以确保所有内容都是good.Link .js文件到我的php页面并且我的元素。检查我的代码拼写错误,我找不到我的错误。这是我的代码:

jQuery(document).ready(function ($) {
function searchq(){
	var searchTxt = $("input[name='food-search']").val();
	$.post("Food-Groups-BG.php", {food_data_bg: searchTxt}, function(output){
		$("#food-output").html(output);
		
	});
}
});
<?php
mysqli_connect("localhost","myUsername","myPassword","dbName") or die ("could not connect");

if(isset($_POST['Food-Groups-BG.php'])){
$searchq = $_POST['Food-Groups-BG.php'];
$searchq = preg_replace("#[^0-9a-z]#i","".$searchq);

$query = mysqli_query("SELECT * FROM food_data");
$count = mysqli_num_rows($query);
if($count == 0){
$output = 'Няма намерени резултати!';
}else{
while($row = mysqli_fetch_array($query)){
$fname = $row['title'];

$output .= '<div>'.$fname.'</div>';
}
}
}
echo($output);
?>

<!--**************************************************************
                             HTML 
***************************************************************-->


<p>Търсене на храни: <input type="text" name="food-search" id="food-search-id" onkeydown="searchq();"></p>
任何帮助表示赞赏! &LT; 3

2 个答案:

答案 0 :(得分:4)

通过在另一个函数(传递给ready())中声明函数 searchq ,您只能在该函数内部使 searchq 可用,而不是全局。我不会在HTML标记中使用 onkeydown 属性,而是使用jQuery绑定事件。

jQuery(document).ready(function ($) {
    function searchq(event) {
        var searchTxt = $("input[name='food-search']").val();
        $.post("Food-Groups-BG.php", {food_data_bg: searchTxt}, function(output){
            $("#food-output").html(output); 
        });
    }
    $("#food-search-id").on("keydown", searchq);
});

要了解有关事件处理的更多信息,您可以查看jQuery文档,例如keydownon

答案 1 :(得分:0)

Ali Yousuf是对的。 newPlace = new Place(newWord); // ^^^ 仅在searchq()处理程序函数的本地范围内可见,并且无法从外部任何位置访问。因此,您必须删除像Ali Yousuf所说的jquery就绪处理程序,或者像jQuery(document).ready(function ($) {....})一样定义您的函数以使其可全局访问