Torre Taylor
Torre Taylor

Reputation: 7

Check to see if input is equal to text inside div

I am trying to build a search box that searches my site for text. Right now I am trying to create a jquery keyup() function that takes input from my search box and compares it to text within two divs. This code does not seem to be working the way I intend it when I type the div's text contents Tom or Randy into the search input. The result is console.log("nothing").

My Html

<input type="text" id="searchfor">

    <div class ="name"> Tom </div>
    <div class ="name"> Randy </div>

My jquery

$(document).ready(function(){

      $('#searchfor').keyup(function(){

            $(".name").each(function(){
                    var $divText = $(".name").text().trim().toLowerCase();
                    var $searchInput = $("#searchfor").val().trim().toLowerCase();

                            if($searchInput === $divText) {
                           console.log("something");
                       }else{
                           console.log("nothing");
                       }


             });
      });
});

I want to know how I can get $searchInput to equal $divText so that when someone types Randy into the search input field the function will console.log("something"). Thank You

Upvotes: 0

Views: 1191

Answers (1)

charlietfl
charlietfl

Reputation: 171669

The problem is var $divText = $(".name").text(); will combine text of all the collection of elements.

Within your each you want the specific instance so use $(this).

$('#searchfor').keyup(function() {
  // no need to get value in each iteration of loop...just store it here once
  var $searchInput = $(this).val().trim().toLowerCase();

  // within loop `this` is instance of div.name
  $(".name").each(function() {
    var $divText = $(this).text().trim().toLowerCase();

    if ($searchInput === $divText) {
      console.log("something");
    } else {
      console.log("nothing");
    }

  });
});

This will only match if whole name is typed in.

If you only want partial match use indexOf()

DEMO

Upvotes: 2

Related Questions