jQuery live Search

时间:2014-01-30 00:19:17

标签: javascript jquery regex

我正在使用jQuery的实时搜索方法,这个代码是否适用于任何人的意见,我认为它有一个错误。它确实有效,尽管代码中存在错误。我正在使用jQuery的实时搜索方法,这个代码是否适用于任何人的意见,我认为它有一个错误。尽管代码中存在错误,但确实有效。

<script>
        $(document).ready(function(){
        $("#discount_credits").keyup(function(){

            // Retrieve the input field text and reset the count to zero
            var filter = $(this).val(), count = 0;

            // Loop through the comment list
            $(".commentlist li").each(function(){

                // If the list item does not contain the text phrase fade it out
                if ($(this).text().search(new RegExp(filter, "i")) < 0) {
                    $(this).fadeOut();

                // Show the list item if the phrase matches and increase the count by 1
                } else {
                    $(this).show();
                    count++;
                }
            });

            // Update the count
            var numberItems = count;
            $("#filter-count").text("Number of meals = "+count);
        });
    });
</script>
<script>
$(document).ready(function(){
      $("[type=range]").change(function(){
        var newval=$(this).val();
        $("#slidernumber").text(newval);
      });
    });
</script>

<div id="search_wrap">
    <form id="live-search" action="" class="styled" method="post">
        <fieldset>
            <input type="range" min="0" step="1" max="100" name="discount_credits" id="discount_credits">
            <span>£</span><span id="slidernumber">25</span>

            <span id="filter-count"></span>
        </fieldset>
    </form>
</div>

<ul class="commentlist">
    <li>22.02</li>
    <li>21.99</li>
    <li>21.99</li>
    <li>12.00</li>
    <li>42.00</li>
    <li>61.99</li>
    <li>2.00</li>
</ul>

1 个答案:

答案 0 :(得分:0)

问题出在您的身上。它目前在<li>标记中的值与您放置在您的范围内的值之间进行正则表达式匹配。要更正这一点,您应该将内容文本解析为int值并将其与过滤器进行比较:

// If the list item does not contain the text phrase fade it out
if (parseInt($(this).text()) > filter) {
    $(this).fadeOut();
 // Show the list item if the phrase matches and increase the count by 1
} else {
    $(this).show();
    count++;
}