如果选择了多个选项,则使用 jQuery 显示隐藏的表单元素
Using jQuery to display hidden form elements if multiple options are selected?
我在联系表单中有一个下拉选项,如果选择了任何一个选项,我想显示一些额外的表单元素。否则,应隐藏其他元素。我已经能够使用单个选项使用以下代码来使其工作:
$(".hidden-section").hide();
$("#contact-form select").change(function(){
if ($(this).val() == "extra options trigger one") {
$(".hidden-section").slideDown("fast");
} else {
$(".hidden-section").slideUp("fast");
}
});
不幸的是,如果选择两个选项中的任何一个,我无法弄清楚如何让它工作。我能够让jQuery工作的唯一方法是:
$(".hidden-section").hide();
$("#contact-form select").change(function(){
if ($(this).val() == "extra options trigger one") || ($(this).val() == "extra options trigger two") {
$(".hidden-section").slideDown("fast");
} else {
$(".hidden-section").slideUp("fast");
}
});
但在这种情况下,一旦选择了默认选项以外的任何选项,隐藏元素就会显示出来。
关于解决这个问题的更好方法的任何想法?非常感谢任何建议。
谢谢!
这一行有多余的括号,不应该在那里:
if ($(this).val() == "extra options trigger one") || ($(this).val() == "extra options trigger two") {
应该是:
if ($(this).val() == "extra options trigger one" || $(this).val() == "extra options trigger two") {
也就是说,if()
语句的条件需要完全包含在外括号中,因此:
if (condition1 || condition2) // valid
if ((condition1) || (condition2)) // valid
if (condition1) || (condition2) // NOT valid
让我对您的代码添加一些注释。
首先 - 不要使用$(".hidden-section").hide();
- 你应该将display:none
添加到.hidden-section
CSS。原因是对于某些人来说,网络连接很慢,直到他们的浏览器运行 javascript hide
需要一些时间。在此期间,它将可见。他们会经历闪烁——有些东西会出现并突然消失。
评论 #2 -
如果你的HTML没有在Ajax中加载,你应该用$(function(){ /* code here */ });
包装它 - 因为这只会在整个页面准备就绪时运行JavaScript。当您的JavaScript引用HTML内容时,这是必需的。
评论 #3 -
您的代码将难以维护 - 想象一下还有第三个选项需要额外的字段。
你最好在每个需要额外字段的选项上添加一个类,例如<option class="requires-extra">Option 2</option>
,然后你的JavaScript更短。
$(function(){
$("select").change(function(){
var $requiresExtra = $(this).find("option:selected").hasClass("requires-extra");
if ( $requiresExtra ) {
$(".hidden-section").slideDown("fast");
} else {
$(".hidden-section").slideUp("fast");
}
});
});
有关工作示例,请参阅我的小提琴。
- 如何在页面重新加载时显示jquery ui对话框
- 如何为显示jquery滑块值的文本框设置默认值
- 突出显示jQuery中单词之间的空格
- 不显示 jQuery 不显眼的验证摘要
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 如何在页面导航上显示jquery警报
- Slider和Date Picker未显示JQuery
- 键入时不要显示jQuery UI自动完成
- 如何显示jQuery自动完成响应并选择它
- 如何在返回后将状态保持为突出显示JQuery树视图的选定节点
- 检测文本是否在鼠标上突出显示jQuery
- 30 秒后显示 Jquery UI 对话框
- X 可编辑的编辑值不显示 jquery 集值
- 显示 jQuery 复选框选择
- 用于显示字段的工具提示和显示 Jquery 验证中的错误的工具提示器
- 如果站点上存在多个滑块,则显示 Jquery UI 滑块的值
- 谷歌地图信息框能够显示JQuery UI小部件
- 在标签中以 asp.net 显示 jQuery 的结果
- 当 Javascript 在浏览器中关闭时显示 Jquery .slide() 表单
- 在 Leaflet Map 上显示 jQuery 动态 GeoJSON 内容