当使用GET表单时,jQuery隐藏功能不起作用
问题描述:
嘿,对于标题有点误导,抱歉的人有些棘手的问题。当使用GET表单时,jQuery隐藏功能不起作用
因此,无论如何,我将首先检查我目前的两个网页设置。
基本上我有我的首页上这种形式:
<form class="car-finder-container" method="GET" action="used-cars.php">
<select name="make" class="form-control select-box">
<option value="make-any">Make (Any)</option>
<?php while($make = $makeFilter->fetch(PDO::FETCH_ASSOC))
{
echo '
<option value="'.$make["Make"].'">'.$make["Make"].'</option>
';
} ?>
</select>
</form>
select元素只是循环我的SQL表的列创建选项,它然后使用GET来选择已经被选择的相同的选项used-cars.php页面上的用户。
这里是第二页表单代码:
<form class="car-finder-container dflt-container">
<select name="make" class="form-control select-box">
<option value="make-any">Make (Any)</option>
<?php while($make = $makeFilter->fetch(PDO::FETCH_ASSOC)){
$selected = $make['Make'] == $_GET['make']?'selected="selected"':'';
echo '
<option '.$selected.' value="'.$make["Make"].'">'.$make["Make"].'</option>
';
} ?>
</select>
</form>
的这部分代码工作正常,它选择基于GET选择的选项,我有一个问题,虽然。
该表单用于过滤在我的页面上显示的div,所有div都在列表中,表单只是简单地使用jQuery来隐藏不具有相同值的类。
这是jQuery的我使用:
<script>
$(document).ready(function(){
$('.form-control').change(function(){
var make = $(this).val();
if(make != 'make-any'){
$('.makes').hide();
$('.'+make).show();
} else {
$('.makes').show();
}
});
});</script>
当用户选择一个选项jQuery的隐藏类,不具有相同的类中的任何div的是隐藏的。
我遇到的问题是,即使页面加载div显示出与用户在第一页上选择的值不匹配时,select元素也会在页面1上选择用户选择的选项,但所有不匹配的值不会被隐藏。
任何想法,为什么这可能会发生?
这是一个活生生的例子,所以你可以看看:http://www.drivencarsales.co.uk/index.php
只需选择一个“制作”,然后按“搜索汽车”,你会发现,上市div的不隐藏但如果您按下“制作'选项卡,您会注意到第1页的'制作'被选中。
答
这是因为只有当<select>
的值发生变化时,才会隐藏不匹配的<div>
。加载页面时默认不会发生这种情况。
可以使用页面加载后trigger()
方法来运行脚本如下手动触发对<select>
一个change
事件:
$(document).ready(function(){
$('.form-control').change(function(){
var make = $(this).val();
if(make != 'make-any'){
$('.makes').hide();
$('.'+make).show();
} else {
$('.makes').show();
}
});
$('.form-control').trigger("change");
});
感谢例如您好,我曾尝试与替换我的代码到然而,当页面加载它时,直播选择选项,任何想法为什么会发生这种情况? – 2014-09-28 17:27:49
可以在以下网址查看示例:http://www.drivencarsales.co.uk – 2014-09-28 17:28:16
@DaleDoback在页面加载时是否有默认选项?有没有与选定的选项相匹配的内容? – 2014-09-28 17:33:03