我正在创建一个自动完成搜索框。当用户在搜索字段外单击时,建议必须消失。
表单输入字段:
<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"> </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);
}
}
“fadeOut”会在inputString少于2个字符或选择其中一个建议时使建议消失。
每当有人点击输入栏外(失去焦点)或没有选择建议时,我也需要fadeOut。 为了更清晰,一个图像:
例如,当用户点击红点附近的某处时,建议应该消失。 我不能让它工作,请帮忙吗?
答案 0 :(得分: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')"