问题ajax加载自动完成。?

时间:2011-08-30 20:18:26

标签: javascript jquery

我创建了一个jquery自动填充它工作正常,但在LOADING...删除值后加载Backspace不起作用。它没有隐藏,仍然显示。

如何在Backspace删除值后隐藏LOADING...

示例: Please click on link and see problem

我的完整代码:

$(document).ready(function () {

/// LOADING... ///////////////////////////////////////////////////////////////////////////////////////

    $('#loadingDiv')
    .hide()  // hide it initially
    .ajaxStart(function() {
        $(this).show();
    })
    .ajaxStop(function() {
        $(this).hide();
    });

/// autocomplete /////////////////////////////////////////////////////////////////////////////////////////            
    $('.auto_complete').keyup(function () {
        var specific = '.' + $(this).closest('div.auto_box').find('b').attr('class');
        var cl_list = '.' + $(this).closest('div.auto_box').find('ul').attr('class');        
        var id = '#' + this.id;
        var url = $(id).attr('class');
        var dataObj = $(this).closest('form').serialize();
        $.ajax({
            type: "POST",
            dataType: 'json',
            url: url,
            data: dataObj,
            cache: false,            
            success: function (data) {
                //alert(url)
                var cl_list = '.' + $('.auto_box '+ specific +' ul').attr('class');
                var id_name = $(cl_list).attr('id');
                $(cl_list).show().html('');
                if (data == 0) {
                    $(cl_list).show().html('<p><b>There is no</b></p>');
                }
                else {
                    $.each(data, function (a, b) {
                        //alert(b.name)
                        $('<p id="' + b.name + '">' + b.name + '</p>').appendTo(cl_list);
                    });

                    $(cl_list + ' p').click(function (e) {
                        e.preventDefault();
                        var ac = $(this).attr('id');
                        $('<b>' + ac + '، <input type="text" name="'+id_name+'[]" value="' + ac + '" style="border: none; display: none;" /></b>').appendTo($('.auto_box ' + specific + ' span'));
                        $(this).remove();
                        return false;
                    });
                    $('.auto_box span b').live('click', function (e) {
                        e.preventDefault();
                        $(this).remove();
                        return false;
                    });
                }        
                if ($(specific + ' input').val() == '') {
                    $(cl_list + " p").hide().remove();
                    $(cl_list).css('display','none');
                    $(".list_name").show().html('');
                };
                $('body').click(function () {
                    $(cl_list + " p").hide().remove();
                    $('.auto_complete').val('');
                    $(cl_list).show().html('');
                    $(cl_list).css('display','none')
                });
            },
            "error": function (x, y, z) {
                // callback to run if an error occurs
                alert("An error has occured:\n" + x + "\n" + y + "\n" + z);
            }
        });
    });
});

1 个答案:

答案 0 :(得分:0)

我建议您下次在链接中发布代码示例时使用jsfiddle。

没关系。 “加载”消息保留在那里,因为结果上的空值没有回退。

快速修复可以通过测试输入中的值,然后再发布if(this.value == ""){ $(cl_list).css('display', 'none'); return false; }

之类的帖子

Here's how it works with it