- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在使用 jQuery 插件(pengoworks 版本),但我遇到了一个问题...当我最初在文本框中输入内容时,它会弹出建议框。但是,在我在文本框中输入几个字母后,如果我暂停,然后继续输入,它只会过滤掉下面建议框中填充的内容,而不是再次运行查询以获得新结果。但每次我在初次暂停后按后退键时,它都会重新运行查询......我希望您能理解我在说什么。抱歉,有任何不清楚的地方,我是编程新手。我将提供我的 html 页面和我的 php 页面。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>
<link href="jquery.autocomplete.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {
$('#input_box').autocomplete("autocomplete_search.php");
})
</script>
</head>
<body>
<input type="text" name="input_box" value="" id="input_box" />
</body>
</html>
这是我的 PHP 部分。
<?php
include 'fh.inc.db.php';
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
die ('Unable to connect. Check your connection parameters.');
mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));
$location = htmlspecialchars(trim($_GET['q'])); //gets the location of the search
if(is_numeric($location)) {
$query = "SELECT
zipcode_id
FROM
user_zipcode
WHERE
zipcode_id LIKE '%$location%'
ORDER BY zipcode_id DESC LIMIT 10";
$result = mysql_query($query, $db) or die(mysql_error($db));
} elseif(is_string($location)) {
$query = "SELECT
city
FROM
user_zipcode
WHERE
city LIKE '%$location%'
ORDER BY city DESC LIMIT 10";
$result = mysql_query($query, $db) or die(mysql_error($db));
}
while($row = mysql_fetch_assoc($result)) {
extract($row);
if(is_numeric($location)){
echo "$zipcode_id \n";
}elseif(is_string($location)){
echo "$city \n";
}
}
?>
最佳答案
编辑:插件初始化中的错误
插件中似乎存在一个棘手的错误,使您传递的选项 matchSubset: 0
被忽略并更改为 1。
在初始化期间,会根据作为第二个参数传递的选项和一些默认值构建一个 options
对象:
...
options.delay = options.delay || 400;
options.matchCase = options.matchCase || 0;
options.matchSubset = options.matchSubset || 1;
...
这种做法和数值变量有一个问题:matchSubset: 0
在条件语句中返回 false!在我们的例子中,matchSubset
将始终等于 1!
我明白为什么要这样做。您可以使用相同的符号来检查变量是否未定义,因为它也会返回 false。但在数字的情况下,它不能按预期工作。
如果您无法使用其他插件,我建议您更改默认选项的合并方式。例如,您可以这样做:
//options.matchSubset = options.matchSubset || 1;
options.matchSubset = typeof matchSubset !== undefined
? options.matchSubset
: 1;
您还可以创建一个 defaults
对象文字并使用 $.extend()
来合并默认值和选项,就像 jquery 插件中通常所做的那样。
该插件默认使用缓存系统。如果当前查询不在缓存中,插件会检查是否存在子集。
假设您输入“Foo”,插件会进行查询并缓存结果。然后添加一个“t”,这将导致查询“Foot”。该插件不会找到“Foot”的条目,但会找到“Foo”的条目,因此它将过滤此列表而不是发出新请求。
// "q" is the query text
function loadFromCache(q) {
if (!q) return null;
if (cache.data[q]) return cache.data[q];
if (options.matchSubset) {
for (var i = q.length - 1; i >= options.minChars; i--) {
var qs = q.substr(0, i);
var c = cache.data[qs];
if (c) {
var csub = [];
for (var j = 0; j < c.length; j++) {
var x = c[j];
var x0 = x[0];
if (matchSubset(x0, q)) {
csub[csub.length] = x;
}
}
return csub;
}
}
}
return null;
};
您可以通过将选项 matchSubset
显式设置为零来控制此行为:
$('#input_box').autocomplete("autocomplete_search.php", { matchSubset: 0 });
来自documentation :
matchSubset (default value: 1)
Whether or not the autocompleter can use a cache for more specific queries. This means that all matches of "foot" are a subset of all matches for "foo". Usually this is true, and using this options decreases server load and increases performance. Remember to set cacheLength to a bigger number, like 10.
关于jQuery 自动完成插件 pengoworks 版本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957845/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!