Reputation: 32321
I have a Search Box under which user types in , on this event i am trying to show only the relevant results present under div
This is my js code
$(document).ready(function()
{
$('.searchtrainer').keyup(function()
{
var tr = $('.trainers_listWrap');
if ($(this).val().length >= 2)
{
var inputdata = $.trim($(".searchtrainer").val());
var noElem = true;
var val = $.trim(this.value).toLowerCase();
el = tr.filter(function()
{
return $(this).find('.mt-radio').text().toLowerCase().indexOf(val) >= 0;
});
if (el.length >= 1)
{
noElem = false;
}
tr.not(el).fadeOut();
el.fadeIn();
}
else
{
tr.fadeIn();
$('#errmsgnovideos').hide();
}
})
});
This is my HTML
<div class="modal-body addTrainerContainer">
<section class="addTrainer_search">
<div class="row-fluid">
<div class="input-group">
<input type="text" class="form-control searchtrainer" placeholder="Search or Add trainer">
</div>
</div>
</section>
<section class="trainers_listWrap">
<li> <label class="mt-radio mt-radio-outline">ONE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">TWO
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">THREE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">Four
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">FIVE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
</section>
</div>
This is my updated fiddle
http://jsfiddle.net/cod7ceho/364/
Could you please tell me how to resolve this ?
Upvotes: 0
Views: 288
Reputation: 654
There are 2 main issues in your code,
1) You have used class selector instead of ID selector
2) You have to use li text to compare but you have taken the whole section to compare.
Refer : http://jsfiddle.net/cod7ceho/363/
Upvotes: 0
Reputation: 429
Add id="searchtrainer" to your input box
<input type="text" id="searchtrainer" class="form-control searchtrainer" placeholder="Search or Add trainer">
And, Change your tr variable selector
var tr = $('.trainers_listWrap li');
And, Change your tr.filter return statement to
return $(this).find('.mt-radio').text().toLowerCase().match("^" + val );
Upvotes: 2
Reputation: 2734
Using :contains
:
$('.searchtrainer').keyup(function() {
if($(this).val() == '') {
$('.trainers_listWrap').children().show();
} else {
$('.trainers_listWrap').children().hide();
$('.trainers_listWrap').find('li:contains("'+($(this).val()).toUpperCase()+'")').show();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="modal-body addTrainerContainer">
<section class="addTrainer_search">
<div class="row-fluid">
<div class="input-group">
<input type="text" class="form-control searchtrainer" placeholder="Search or Add trainer">
</div>
</div>
</section>
<section class="trainers_listWrap">
<li> <label class="mt-radio mt-radio-outline">ONE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">TWO
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">THREE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">Four
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
<li> <label class="mt-radio mt-radio-outline">FIVE
<input type="radio" value="1" name="test">
<span></span>
</label>
</li>
</section>
</div>
Upvotes: 0