Javascript 我已经建立了自动完成输入框(但foucsout有一个问题)
我已经建立了自动完成输入框(但foucsout有一个问题) 看这个: 演示: 我的HTML代码:Javascript 我已经建立了自动完成输入框(但foucsout有一个问题),javascript,html,jquery,autocomplete,Javascript,Html,Jquery,Autocomplete,我已经建立了自动完成输入框(但foucsout有一个问题) 看这个: 演示: 我的HTML代码: <div class="autoCompleteDiv"> <input type="text" value="" size="60" name="countryName" id="countryName" class="autocomplete"> <ul class="autoCompleteList"></ul> </d
<div class="autoCompleteDiv">
<input type="text" value="" size="60" name="countryName" id="countryName" class="autocomplete">
<ul class="autoCompleteList"></ul>
</div>
结果应类似于stackoverflow的标签输入框
从链接添加实际代码--帕特里克·德瓦
$(文档).ready(函数(){
$(“.autocomplete”).attr(“值”,“自动完成”);
$(“.autocomplete”).keyup(函数(){
$(.autoCompleteList”).css(“显示”、“无”);
if($(this.attr(“value”)!=“”){
$(“.autoCompleteList”).width($(this.width()+3);
$(.autoCompleteList”).css(“显示”、“块”);
var Value=$(this.attr(“Value”);
$.ajax({
键入:“获取”,
url:“Tags.php”,
数据:“国家=”+价值,
数据类型:“html”,
成功:功能(数据){
如果(数据!=“”){
$(“.autoCompleteList”).html(数据);
var re=新的RegExp(“(“+值+”),“gi”);
$('.autoCompleteList').html($('.autoCompleteList').html().replace(re,'$1'));
$(“.autoCompleteList li”)。单击(函数(){
$(“.autocomplete”).attr(“value”,$(this.text());
});
}否则{
$(.autoCompleteList”).css(“显示”、“无”);
}
}
});
}
});
$(“.autocomplete”).focusout(函数(){
//$(“.autoCompleteList”).css(“显示”、“无”);观看视频。我无法选择国家。
});
});
好的,我添加了$(“.autoCompleteList”).hide()代码>行,单击事件处理程序并稍微重写代码:
$(function(){ // shorthand for doc.ready
(function(){
var $input = $(".autocomplete"), // caching
$list = $(".autoCompleteList");
$input.attr("value","").keyup(function() {
$list.hide();
if ($(this).attr("value")!=="") {
$list.width($(this).width()+3).show();
var val = $(this).attr("value"); // dont use value as varaiable name
$.ajax({
type: "GET",
url: "Tags.php",
data: "country=" + val,
dataType: "html",
success: function(data) {
if (data!=="") {
//replacing data
var re = new RegExp("(" + val + ")", "gi");
data = data.replace(re, '<span>$1</span>');
$list.html(data);
// binding click
$(".autoCompleteList li").bind('click', function() {
$(".autocomplete").attr("value", $(this).text());
$(".autoCompleteList").hide();
});
} else {
$list.hide();
}
}
});
}
});
})(); // self executing
});
$(function(){//doc.ready的简写
(函数(){
var$input=$(“.autocomplete”),//缓存
$list=$(“.autoCompleteList”);
$input.attr(“值”),keyup(函数(){
$list.hide();
如果($(this).attr(“值”)!=“”){
$list.width($(this.width()+3.show());
var val=$(this).attr(“value”);//不要将value用作变量名
$.ajax({
键入:“获取”,
url:“Tags.php”,
数据:“国家=”+val,
数据类型:“html”,
成功:功能(数据){
如果(数据!==“”){
//替换数据
var re=新的RegExp(“(“+val+”)”、“gi”);
数据=数据。替换(关于“$1”);
$list.html(数据);
//绑定点击
$(“.autoCompleteList li”).bind('click',function(){
$(“.autocomplete”).attr(“value”,$(this.text());
$(“.autoCompleteList”).hide();
});
}否则{
$list.hide();
}
}
});
}
});
})();//自动执行
});
好的,我添加了$(“.autoCompleteList”).hide()代码>行,单击事件处理程序并稍微重写代码:
$(function(){ // shorthand for doc.ready
(function(){
var $input = $(".autocomplete"), // caching
$list = $(".autoCompleteList");
$input.attr("value","").keyup(function() {
$list.hide();
if ($(this).attr("value")!=="") {
$list.width($(this).width()+3).show();
var val = $(this).attr("value"); // dont use value as varaiable name
$.ajax({
type: "GET",
url: "Tags.php",
data: "country=" + val,
dataType: "html",
success: function(data) {
if (data!=="") {
//replacing data
var re = new RegExp("(" + val + ")", "gi");
data = data.replace(re, '<span>$1</span>');
$list.html(data);
// binding click
$(".autoCompleteList li").bind('click', function() {
$(".autocomplete").attr("value", $(this).text());
$(".autoCompleteList").hide();
});
} else {
$list.hide();
}
}
});
}
});
})(); // self executing
});
$(function(){//doc.ready的简写
(函数(){
var$input=$(“.autocomplete”),//缓存
$list=$(“.autoCompleteList”);
$input.attr(“值”),keyup(函数(){
$list.hide();
如果($(this).attr(“值”)!=“”){
$list.width($(this.width()+3.show());
var val=$(this).attr(“value”);//不要将value用作变量名
$.ajax({
键入:“获取”,
url:“Tags.php”,
数据:“国家=”+val,
数据类型:“html”,
成功:功能(数据){
如果(数据!==“”){
//替换数据
var re=新的RegExp(“(“+val+”)”、“gi”);
数据=数据。替换(关于“$1”);
$list.html(数据);
//绑定点击
$(“.autoCompleteList li”).bind('click',function(){
$(“.autocomplete”).attr(“value”,$(this.text());
$(“.autoCompleteList”).hide();
});
}否则{
$list.hide();
}
}
});
}
});
})();//自动执行
});
可能与@patrick dw重复:我删除了“focusout(jQuery)问题”faressoft-当@Sep O Sep回答时,您问题中的代码被注释掉了。当我使用未注释的代码运行您的页面时,它会起作用。我编辑了这个问题以包含链接中的代码。到目前为止做得很好!然而,我建议你不要在这个问题上重新发明轮子。实际上,我自己刚刚构建了一个标签输入控件,它在功能上与堆栈溢出控件非常相似(因为我正在构建一个需要它的站点)。我没有从头开始编写它(好吧,使用纯jQuery),而是遵循从堆栈溢出到这个插件()的代码路径,但决定使用jqueryui的autocomplete函数,因为它比较新。我的代码主要位于:。希望有帮助!我想我的代码现在应该可以为你工作了@patrick dw的可能副本:我删除了“focusout(jQuery)的问题”faresoft-当@Sep O Sep被回答时,你问题中的代码被注释掉了。当我使用未注释的代码运行您的页面时,它会起作用。我编辑了这个问题以包含链接中的代码。到目前为止做得很好!然而,我建议你不要在这个问题上重新发明轮子。实际上,我自己刚刚构建了一个标签输入控件,它在功能上与堆栈溢出控件非常相似(因为我正在构建一个需要它的站点)。我没有从头开始编写它(好吧,使用纯jQuery),而是遵循从堆栈溢出到这个插件()的代码路径,但决定使用jqueryui的autocomplete函数,因为它比较新。我的代码主要位于:。希望有帮助!我想我的代码现在应该对你有用了看视频。贝考
$(function(){ // shorthand for doc.ready
(function(){
var $input = $(".autocomplete"), // caching
$list = $(".autoCompleteList");
$input.attr("value","").keyup(function() {
$list.hide();
if ($(this).attr("value")!=="") {
$list.width($(this).width()+3).show();
var val = $(this).attr("value"); // dont use value as varaiable name
$.ajax({
type: "GET",
url: "Tags.php",
data: "country=" + val,
dataType: "html",
success: function(data) {
if (data!=="") {
//replacing data
var re = new RegExp("(" + val + ")", "gi");
data = data.replace(re, '<span>$1</span>');
$list.html(data);
// binding click
$(".autoCompleteList li").bind('click', function() {
$(".autocomplete").attr("value", $(this).text());
$(".autoCompleteList").hide();
});
} else {
$list.hide();
}
}
});
}
});
})(); // self executing
});