Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我已经建立了自动完成输入框(但foucsout有一个问题)_Javascript_Html_Jquery_Autocomplete - Fatal编程技术网

Javascript 我已经建立了自动完成输入框(但foucsout有一个问题)

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

我已经建立了自动完成输入框(但foucsout有一个问题)

看这个:

演示:

我的HTML代码:

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