多条件过滤器如何使用 Jquery 工作?
how multiple condition filter can work using Jquery?
如何让多个过滤条件同时起作用?目前我可以使用个别条件进行过滤。但是在给出多个条件时,它只是根据最后一个过滤条件进行过滤。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div class="form-group">
<h6>Name</h6>
<input id="Name" type="text" class="form-control" placeholder="Name" />
</div>
<div class="form-group">
<h6>Title</h6>
<input id="Title" type="text" class="form-control" placeholder=" Title" />
</div>
<div class="form-group">
<h6>City</h6>
<select id="City" class="form-control select2" style="width: 100%;">
<option selected="selected">Select a City</option>
<option>A</option>
<option>B</option>
<a href="Scripts/">Scripts/</a>
</select>
</div>
$(document).ready(function () {
$("#Name").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(1)").text().toLowerCase().indexOf(value) > -1)
});
});
});
$(document).ready(function () {
$("#Title").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(2)").text().toLowerCase().indexOf(value) > -1)
});
});
});
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(3)").text().toLowerCase().indexOf(value) > -1)
});
});
});
这是您想要实现的功能示例:
var selectedName ='';
var selectedTitle ='';
var selectedCity ='';
var myFilter = function () {
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(1)").text().toLowerCase().indexOf(selectedName) > -1 &&
$(this).find("td:eq(2)").text().toLowerCase().indexOf(selectedTitle) > -1 &&
$(this).find("td:eq(3)").text().toLowerCase().indexOf(selectedCity) > -1)
});
};
$("#Name").on("keyup", function () {
selectedName = $(this).val().toLowerCase();
myFilter();
});
$("#Title").on("keyup", function () {
selectedTitle = $(this).val().toLowerCase();
myFilter();
});
$("#City").on("change", function () {
selectedCity = $(this).val().toLowerCase();
if (selectedCity == 'select a city')
selectedCity ='';
myFilter();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
<h6>Name</h6>
<input id="Name" type="text" class="form-control" placeholder="Name" />
</div>
<div class="form-group">
<h6>Title</h6>
<input id="Title" type="text" class="form-control" placeholder=" Title" />
</div>
<div class="form-group">
<h6>City</h6>
<select id="City" class="form-control select2" style="width: 100%;">
<option selected="selected">Select a City</option>
<option>A</option>
<option>B</option>
<a href="Scripts/">Scripts/</a>
</select>
</div>
<br/>
<table id="tranmittalsTable">
<tr>
<td>1</td>
<td>John</td>
<td>T1</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>Tom</td>
<td>T1</td>
<td>A</td>
</tr>
<tr>
<td>3</td>
<td>Pom</td>
<td>T2</td>
<td>A</td>
</tr>
<tr>
<td>4</td>
<td>Lina</td>
<td>T3</td>
<td>A</td>
</tr>
<tr>
<td>5</td>
<td>Corina</td>
<td>T5</td>
<td>B</td>
</tr>
</table>
在 JQuery 过滤中,我们可以使用 AND 和 OR 运算,如下所示。
AND运算
a=$('[myc="blue"][myid="1"][myid="3"]');
OR运算,使用逗号
a=$('[myc="blue"],[myid="1"],[myid="3"]');
在你的情况下,如果你想使用 OR 然后检查下面的代码。
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("[td:eq(3)],
[td:eq(2)]").text().toLowerCase().indexOf(value) > -1)
});
});
});
在你的情况下,如果你想使用 AND 然后检查下面的代码。
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("[td:eq(3)]
[td:eq(2)]").text().toLowerCase().indexOf(value) > -1)
});
});
});
如何让多个过滤条件同时起作用?目前我可以使用个别条件进行过滤。但是在给出多个条件时,它只是根据最后一个过滤条件进行过滤。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<div class="form-group">
<h6>Name</h6>
<input id="Name" type="text" class="form-control" placeholder="Name" />
</div>
<div class="form-group">
<h6>Title</h6>
<input id="Title" type="text" class="form-control" placeholder=" Title" />
</div>
<div class="form-group">
<h6>City</h6>
<select id="City" class="form-control select2" style="width: 100%;">
<option selected="selected">Select a City</option>
<option>A</option>
<option>B</option>
<a href="Scripts/">Scripts/</a>
</select>
</div>
$(document).ready(function () {
$("#Name").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(1)").text().toLowerCase().indexOf(value) > -1)
});
});
});
$(document).ready(function () {
$("#Title").on("keyup", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(2)").text().toLowerCase().indexOf(value) > -1)
});
});
});
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(3)").text().toLowerCase().indexOf(value) > -1)
});
});
});
这是您想要实现的功能示例:
var selectedName ='';
var selectedTitle ='';
var selectedCity ='';
var myFilter = function () {
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("td:eq(1)").text().toLowerCase().indexOf(selectedName) > -1 &&
$(this).find("td:eq(2)").text().toLowerCase().indexOf(selectedTitle) > -1 &&
$(this).find("td:eq(3)").text().toLowerCase().indexOf(selectedCity) > -1)
});
};
$("#Name").on("keyup", function () {
selectedName = $(this).val().toLowerCase();
myFilter();
});
$("#Title").on("keyup", function () {
selectedTitle = $(this).val().toLowerCase();
myFilter();
});
$("#City").on("change", function () {
selectedCity = $(this).val().toLowerCase();
if (selectedCity == 'select a city')
selectedCity ='';
myFilter();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group">
<h6>Name</h6>
<input id="Name" type="text" class="form-control" placeholder="Name" />
</div>
<div class="form-group">
<h6>Title</h6>
<input id="Title" type="text" class="form-control" placeholder=" Title" />
</div>
<div class="form-group">
<h6>City</h6>
<select id="City" class="form-control select2" style="width: 100%;">
<option selected="selected">Select a City</option>
<option>A</option>
<option>B</option>
<a href="Scripts/">Scripts/</a>
</select>
</div>
<br/>
<table id="tranmittalsTable">
<tr>
<td>1</td>
<td>John</td>
<td>T1</td>
<td>A</td>
</tr>
<tr>
<td>2</td>
<td>Tom</td>
<td>T1</td>
<td>A</td>
</tr>
<tr>
<td>3</td>
<td>Pom</td>
<td>T2</td>
<td>A</td>
</tr>
<tr>
<td>4</td>
<td>Lina</td>
<td>T3</td>
<td>A</td>
</tr>
<tr>
<td>5</td>
<td>Corina</td>
<td>T5</td>
<td>B</td>
</tr>
</table>
在 JQuery 过滤中,我们可以使用 AND 和 OR 运算,如下所示。
AND运算
a=$('[myc="blue"][myid="1"][myid="3"]');
OR运算,使用逗号
a=$('[myc="blue"],[myid="1"],[myid="3"]');
在你的情况下,如果你想使用 OR 然后检查下面的代码。
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("[td:eq(3)],
[td:eq(2)]").text().toLowerCase().indexOf(value) > -1)
});
});
});
在你的情况下,如果你想使用 AND 然后检查下面的代码。
$(document).ready(function () {
$("#City").on("change", function () {
var value = $(this).val().toLowerCase();
$("#tranmittalsTable tr").filter(function () {
$(this).toggle($(this).find("[td:eq(3)]
[td:eq(2)]").text().toLowerCase().indexOf(value) > -1)
});
});
});