![](/img/trans.png)
[英]Why does my JavaScript no longer clear the value of an input box when I comment out an alert on the previous line?
[英]Why do my all my <LI>'s remain selected when I clear/delete the value to search for in my input box
我需要該站點的專家和專家的幫助。
問題是,一旦我在輸入框中搜索值,一切都會按預期進行,除了以下事實:清除輸入框后,所有<LI>
保持“選中”狀態,從而使它們突出顯示。 我如何才能讓它們全部恢復為白色/未選中狀態的默認格式?
我在這里為您整理了一個小提琴:
/* find item in list as you type */
$("#refdocs").keyup(function(){ // onkeyup for the input field
var pattern = new RegExp($(this).val()); // store current value of input field as a RegExp pattern (though it could just be a string)
$("#refdocs_list li").each(function(){ // go through each item and try to match the pattern
var text = $(this).text();
if(text.match(pattern) !== null){
$(this).addClass("selected"); // pattern found - set .selected
}
else{
$(this).removeClass("selected"); // pattern not found - remove .selected
}
});
});
這是因為您沒有檢查一個空值,該值將匹配所有內容
$("#refdocs").keyup(function(){
var val = $(this).val();
var pattern = new RegExp(val);
$("#refdocs_list li").each(function(){
var text = $(this).text();
if(text.match(pattern) !== null && val.length){
$(this).addClass("selected");
}
else{
$(this).removeClass("selected");
}
});
});
眼睛更容易一點
$("#refdocs").on('keyup', function(){
var val = this.value;
$("#refdocs_list li").each(function() {
$(this).toggleClass('selected', $(this).text().indexOf(val) != -1 && val.length > 0);
});
});
如果該值為空,則只需要刪除所選的類
if($(this).val() === ''){
$('#refdocs_list ul li').removeClass('selected');
}
看到我更新的jsfiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.