1

我正在开发的网站上进行实时搜索。目前,它在输入第一个字符后搜索 MySql 数据库,并更新每个新字符的搜索。当Space作为第一个字符按下时,它将显示数据库中的所有条目。我不希望它那样做。我在某处发现了以下代码,可以防止输入SPACE字符:

$('input[type="text"]').keydown(function(e){
  var ignore_key_codes = [8,32];
  if ($.inArray(e.keyCode, ignore_key_codes) >= 0){
  e.preventDefault();
 }
});

这做了它应该做的,但不完全是我想要的。这将完全阻止空格键在文本输入中工作,我需要的是它仅在空格键是输入的第一个字符时才阻止空格键。例如,输入“apples”会阻止空格,但输入“apples oranges”不会。

有什么我可以尝试实现的吗?

4

3 回答 3

2

你可以像这个例子一样轻松地做到这一点:

function keyPress(e) { 
    var e = window.event || e;
    var key = e.keyCode;
    //space pressed
    if (key == 32) { //space
        return;
    }
    searchInDataBase(); //make your ajax call to search in data base etc.
}

如果按下该space键,则返回并且不执行任何操作,否则您将继续搜索...

于 2012-10-29T11:35:43.343 回答
1

继@Florent 的评论之后,当用户在您的文本框中键入一个值时,请检查修剪后的值是否为 != '' 如果是,则应该可以安全地继续

例如

if($.trim($txtbox.val()) != ''){ // proceed to do search

}
于 2012-10-29T11:36:35.083 回答
1
$('input[type="text"]').keydown(function(e){
    if (e.keyCode == 32 && $.trim($(this).val()) == ''){
        e.preventDefault();
    } else {
        alert("searching..");
    }
});

演示:http: //jsfiddle.net/BerkerYuceer/JJG9M/

于 2012-10-29T11:53:04.883 回答