0

我正在创建一个自动完成搜索框。当用户在搜索字段之外单击时,建议必须消失。

表单输入字段:

<input type="text" name="naam_textbox" id="naam_textbox" class="field" autocomplete="off" onkeyup="suggest(this.value, 'naam');" onblur="fill();" />

javascript代码:

function suggest(inputString, veld){
if(veld == "naam") {
    if(inputString.length < 2) {
        $('#suggestions_naam').fadeOut();
    } else {
    $('#naam_textbox').addClass('load');
        var dropdown = $( '<div class="suggestionsBox" id="suggestions_naam" style="display: none;"><div class="suggestionList" id="suggestionsList_naam"> &nbsp; </div></div>' );
        if (inserted_naam == 0) {
            dropdown.insertAfter( "#naam_textbox" );
            inserted_naam = 1;
        }
        $.post("includes/homepage/autosuggest_naam.php", {queryString: ""+inputString+""}, function(data){
            if(data.length >0) {
                $('#suggestions_naam').fadeIn();
                $('#suggestionsList_naam').html(data);
                $('#naam_textbox').removeClass('load')
            }
        });
    }
}
}

function fill(thisValue, veld) {
    if(veld == "naam") {
        $('#naam_textbox').val(thisValue);
        setTimeout("$('#suggestions_naam').fadeOut();", 60);
    }
}

只要 inputString 少于 2 个字符,或者选择了其中一个建议,“fadeOut”就会使建议消失。

每当有人在输入字段外单击(失去焦点)或未选择建议时,我也需要它来淡出。为了更清楚,一张图片:

当用户点击红点时,建议应该消失

例如,当用户单击红点附近的某处时,建议应该消失。我无法让它工作,请帮助?

4

1 回答 1

1

这是问题的原因,

onblur="fill();" //no parameters

而你的方法是

function fill(thisValue, veld) {   //2parameters
    if(veld == "naam") {
        $('#naam_textbox').val(thisValue);
        setTimeout("$('#suggestions_naam').fadeOut();", 60);
    }
}

缺少传递参数,因此它不起作用。

所以把它改成

onblur = "fill(this.value, 'naam')"
于 2014-04-14T11:52:37.593 回答