Autosuggestion Javascript/PHP/AJAX Code
Autosuggestion Javascript/PHP/AJAX Code
考虑一个包含一些值的数组
array = {'microsoft','micromax', 'miniclip','michael jackson','million','milky way'}
当用户开始键入文本时,说他/她正在尝试输入million
。当用户开始键入'mi'
数组中的上述建议将显示给用户。
我的问题:
让我们假设用户正在输入单词"迷你剪辑",通过拼写错误他/她开始键入'mni' or 'minc' or 'nim' or 'imn' or 'nim' instead of 'min',
这种情况还需要向用户显示建议。无论如何,这些键入的字符都可以在"迷你剪辑"一词中找到。拼写错误对于所有入门级用户/普通用户都很常见。所以我需要javascript/php/ajax/opensource library中的代码来适应这种情况。
HTML
<form action=""><input type="text" name="word" id="word"></form>
<div id="auto"></div>
.JS
$(function(){
$('#word').keyup(function(e){
var input = $(this).val();
$.ajax({
type: "get",
url: "autocomplete.php",
data: {word: input},
async: true,
success: function(data){
var outWords = $.parseJSON(data);
$('#auto').html('');
for(x = 0; x < outWords.length; x++){
$('#auto').prepend('<div>'+outWords[x]+'</div>'); //Fills the #auto div with the options
}
}
})
})
});
不要忘记链接jQuery
...
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
注:注:
您需要执行一些操作,例如将onclick
事件添加到#auto
的子div
以替换#word
的内容(输入字段)。
.PHP
$array = array('microsoft','micromax', 'miniclip','michael jackson','million','milky way');
$input = urldecode($_GET['word']); //Get input word/phrase (decode in case of spaces etc.)
$length = strlen($input); //Get length of input word
// $min = $length - 1; //Length of word - 1
// $max = $length + 1; //Length of word + 1
$returned = preg_grep('/^(['.$input.']{'.$length.'}.*)$/i', $array); //Find matches in $array and return as array
$returned = array_values($returned); //Re-index from 0
echo json_encode($returned); //Returm json string to ajax call
正则表达式
/^([$input]{$length}.*)$/i
-
/
=> 开始犯罪 -
^
=> 字符串开头 -
(
=> 启动捕获组 -
[
=> 开始角色类 -
$input
=> 将输入词添加到字符类 -
]
=> 结束字符类 (4) -
{$length}
=> 设置字符串长度以匹配字符类(输入单词的长度) -
.*
=> 匹配以下任意字符 0 次或更多次 -
)
=> 结束捕获组 (3) -
$
=> 匹配字符串的结尾 -
/
=> 结束分量表 -
i
=> 不区分大小写的修饰符
最小值/最大值
我已经包含了注释的$min
和$max
变量......我认为您可能会喜欢的附加功能...您可以通过更改以下内容来实现它们:
{'.$length.'} <-- Change this
{'.$min.','.$max.'} <--To that
{'.$length.','.$max.'} <-- Or that (or another combination)
例
一个例子可能最好地说明它是如何工作的......
假设有一个自动更正数组:
$array = array('loser', 'loses', 'losing');
以及以下输入:
lose
当前({'.$length.'}
)代码将返回:
loser
loses
但是如果你把它改成{'.$min.','.$max.'}
(并取消注释$min
/$max
);它将返回:
losing
loser
loses
试试这个
这是索引.php
<html>
<body>
<input type="text" name="testid" id="testid" >
<div id="result">
</div>
</body>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script>
$(document).ready(function(){
var xhr = null;
$('#testid').on("keyup", function(){
if(xhr !== null) {
xhr.abort();
}
var searchkey = $(this).val();
xhr = $.ajax({
method: "POST",
url: "ajax_request.php",
data: { searchkey: searchkey }
})
.done(function( msg ) {
$('#result').html(msg);
});
});
$(document.body).on('click', ".listitem", function(e){
var values = $(this).html();
$('#testid').val(values);
$('#result').html('');
return false;
});
});
</script>
</html>
这是你的ajax_request.php
<?php
$arr = array("Shailesh Sonare", "Hello World", "Hello Universe");
$html = "<ul>";
foreach ($arr as $key => $value) {
$html .= "<li class='listitem'>" . $value . "</li>";
}
$html .= "</ul>";
echo $html;
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在php文件中获取$.post-ajax传递的值
- Replacing $ .ajax?
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- Ajax发布表单序列化,发布引号'
- 通过Ajax将JavaScript函数传递给PHP文件
- ajax请求的顺序总是不同的
- 可以't使用Polymer's的核心ajax
- Ajax Live搜索发布到Laravel视图
- Ajax聊天消息重复而不仅仅是更新
- 从控制器返回后Ajax启动事件激发
- PHP AJAX图片上传示例不上传
- 从ajax请求中获取javascript对象
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从 ajax 请求 (jQuery) 到 Code Igniter 控制器的 500 错误
- Autosuggestion Javascript/PHP/AJAX Code
- Ajax Double Code如何使其更短
- AJAX Post HTML Code
- 从 JavaScript 调用 Code Behind Function(不是 AJAX!)