2014-07-18 19 views
0

我有這個功能很像一個魅力。腳本只要匹配就會突出顯示內容中的單詞。但是,如果沒有結果與查詢匹配,我似乎可以找到正確的代碼來顯示錯誤。在頁面(jQuery)中搜索文本 - 如果不匹配怎麼辦

這是HTML:

<div id="search"> 
    <input type="text" id="searchtxt" /> 
    <input type="button" value="Find" onClick="replaceText();" id="search-resultButton" /> 
</div> 

<p>Copy goes here</p> 

這是函數:

function replaceText() { 
    $("body").find(".search-result").removeClass("search-result"); 

    var searchword = $("#searchtxt").val(); 
    var filter = new RegExp("\\b"+searchword+"\\b", "ig"); 

    if(searchword!=""){   
     $("body").each(function() { 
      $(this).html($(this).html().replace(filter,"<span class='search-result'>" + searchword + "</span>")) ; 
     }); 
    } 
} 

我想我在尋找類似:

if(searchword!=""){   
    $("body").each(function() { 
     $(this).html($(this).html().replace(filter,"<span class='search-result'>" + searchword + "</span>")) ; 
    }); 
} else { 
    alert(「There is no match」) 
} 

但我可以」似乎找到了寫它的方式。任何幫助,將不勝感激。

謝謝!

回答

0

你已經搞亂了報價alert(「There is no match」)。有可能到頭來你只需要所以它使用正常報價來修復它之前,有任何機會,將工作:

alert("There is no match") 

"「 < - 看看那些看起來不同

哦,我敢肯定,這不是最好的方法。但你可以檢查被替換的內容是否與原始內容相同,如果是,則不匹配。

var replaced = $(this).html().replace(filter,"<span class='search-result'>" + searchword + "</span>"); 
if ($(this).html() == replaced) { 
    //error 
} 
else 
    $(this).html(replaced) ; 
+0

謝謝戴夫。是的,當我將代碼複製並粘貼到Stackoverflow中時,引號不能很好地導出。在我的代碼中它們是正確的。同樣謝謝你的建議。我無法成功實現它,所以我使用:包含而不是RegEx。這簡單得多。 – Julesfrog

0

無法獲得RegExp的工作,所以我去了:包含。它效果很好。我希望這可以幫助別人:

function replaceText() { 
    $("body").find(".search-result").removeClass("search-result"); 

    var searchWord = $("#searchtxt").val();    

    $("body").each(function() { 
     $('.module').removeClass('highlight'); //Remove old search highlights 
     $("h1 .last-name:contains('" + searchWord + "')").addClass("search-result"); 

     if ($(".search-result")[0]){     
      // Do something 
     } else { 
      // No Match 
     } 
    }); 
} 

破案敏感的問題,我補充說:

$.expr[":"].contains = $.expr.createPseudo(function(arg) { 
    return function(elem) { 
     return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; 
    }; 
}); // jQuery 1.8+ 

我希望這有助於。

相關問題