【发布时间】:2015-06-10 19:48:03
【问题描述】:
我有一个选择下拉菜单,里面有很多选项可供选择。
当一个人选择一个选项时,我需要根据选择菜单更改表单字段。
由于某种原因,我被卡住了。我想把罪魁祸首归咎于我有隐藏在应该显示的元素中的类。问题是我想不出正确的方法来解决这个问题。
可能值得一提的是,我使用的是 WordPress,这些字段用于额外的用户注册字段。
这是fiddle for method 1
这是fiddle for method 2
html
<div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">'Member Type' </label>
<select id="reg_mem_type" name="mem_type" value="'.esc_attr($_POST['mem_type']).'">
<option value="ARENA">ARENA</option>
<option value="ARO">ARO</option>
<option value="BUILD">BUILD</option>
<option value="RM">RM</option>
<option value="CLUBINS">CLUBINS</option>
<option value="AFFL">AFFL</option>
<option value="HOCKEY">HOCKEY</option>
<option value="HOCKEYA">HOCKEYA</option>
<option value="PRO">PRO</option>
<option value="SKATER">SKATER</option>
<option value="WE">WE</option>
<option value="LINS">LINS</option>
<option selected disabled value="Member">Member Type</option>
</select>
</div>
<div class="member-type bs-member-type form-row form-row-wide"> <h2>personal info</h2></div>
<div class="member-type bs-member-type form-row form-row-wide"><label for="reg_first_name">'.__('First Name', 'woocommerce').'</label>
<input type="text" class="input-text" name="first_name" id="reg_first_name" size="10" value" '.esc_attr($_POST['first_name']).'" /></div>
<div class="member-type bs-member-type form-row form-row-wide"><label for="reg_last_name">'.__('Last Name', 'woocommerce').'</label>
<input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10" value" '.esc_attr($_POST['last_name']).'" /></div>
<div class="arena-member-type bs-member-type form-row form-row-wide"> <h2>company info</h2></div>
<div class="bs-member-type arena-member-type form-row form-row-wide"> <label for="reg_website">'.__('Website' , 'woocommerce').'</label>
<input type="text" class="input-text" name="website" id="reg_website" value" '.esc_attr($_POST['website']).'"/></div>
<div class="arena-member-type bs-member-type form-row form-row-wide"> <label for="reg_fax">'.__('Fax' , 'woocommerce').'</label>
<input type="text" class="input-text" name="fax_num" id="reg_fax" value" '.esc_attr($_POST['fax_num']).'"/></div>
css-方法1
.member-type {
display: none;
}
.pro-member-type {
display: none;
}
.bs-member-type {
display: none;
}
.arena-member-type {
display: none;
}
.show-fields {
display:block;
}
.hidden-fields {
display:none;
}
css方法2
.member-type {
display: none;
}
.pro-member-type {
display: none;
}
.bs-member-type {
display: none;
}
.arena-member-type {
display: none;
}
.show-fields {
display:block;
}
.hidden-fields {
display:none;
}
js方法一
jQuery(document).ready(function ($) {
$('select[name=mem_type]').change(function () {
// hide all optional elements
$('.member-type').css('display', 'none');
$('.arena-member-type').css('display', 'none');
$('.bs-member-type').css('display', 'none');
$('.pro-member-type').css('display', 'none');
$("select[name=mem_type] option:selected").each(function () {
if ($(this).val() == "SKATER" || "HOCKEY" || "HOCKEYA") {
$('.member-type').css('show-fields');
} else if ($(this).val() == "BUILD") {
$('.bs-member-type').addclass('show-fields');
} else if ($(this).val() == "ARENA") {
$('.arena-member-type').addclass('show-fields');
} else if ($(this).val() == "PRO") {
$('.pro-member-type').addclass('show-fields');
}
});
});
});
js方法二
jQuery(document).ready(function ($) {
$('select[name=mem_type]').change(function () {
// hide all optional elements
$('.member-type').css('display', 'none');
$('.arena-member-type').css('display', 'none');
$('.bs-member-type').css('display', 'none');
$('.pro-member-type').css('display', 'none');
$("select[name=mem_type] option:selected").each(function () {
if ($(this).val() == "SKATER" || "HOCKEY" || "HOCKEYA") {
$('.member-type').css('display', 'block');
} else if ($(this).val() == "BUILD") {
$('.bs-member-type').css('display', 'block');
} else if ($(this).val() == "ARENA") {
$('.arena-member-type').css('display', 'block');
} else if ($(this).val() == "PRO") {
$('.pro-member-type').css('display', 'block');
}
});
});
});
【问题讨论】:
-
只是我还是 css 方法 1 与 css 方法 2 相同?
-
同时检查输入元素的
value属性。缺少等于=运算符。 -
哎呀,你是对的..在问题中我确实粘贴了相同的 css..
-
查看这个 SO 答案stackoverflow.com/a/29634409/1839887
标签: javascript jquery html css wordpress