我一直在尝试创建一个根据用户条目更改的表单。到目前为止,我已成功使用无线电输入来更改要显示的内容,但我无法编辑JS以使用下拉菜单。
<div class="show-and-hide-content">
<select>
<option></option>
<option data-type="true">true</option>
<option data-type="false">false</option>
</select>
<div class="hidden content content-true">You have selected true.</div>
<div class="hidden content content-false">You have selected false.</div>
</div>
.hidden {
display:none;
}
$(function () {
$('.show-and-hide-content').each(function (i) {
var $row = $(this);
var $selects = $row.find('select');
$selects.on('change', function () {
var type = $(this).attr('data-type');
$row
.find('.content').hide()
.filter('.content-' + type)
.show();
});
});
});
Non working drop down JSFiddle
我知道JQuery正在寻找正确的元素并且正在改变它们的显示,但它永远不会改变显示以使它们可见。我认为问题可能是JS没有正确地从选项中获取数据类型变量。
我希望JQuery按预期工作,并根据用户选择显示正确的div。
如何修改代码才能执行此操作?谢谢你的帮助。
答案 0 :(得分:4)
你现在得到了:
var type = $(this).attr('data-type');
由于在<select>
上调用了该函数,因此您选择data-type
(已定义)的<select>
属性,而不是<option>
。
因此,您需要找到所选的<option>
:
var type = $(this).find('option:selected').attr('data-type');
<强> [编辑] 强>
如果您想简化代码,可以使用:
$(function () {
$('.show-and-hide-content select').on('change', function() {
$(this).parent().
find('.content').hide()
.filter('.content-' + $(this).find('option:selected').attr('data-type') ).show();
});
});
答案 1 :(得分:1)
答案 2 :(得分:0)
试试这个
$(function () {
$('#select').on('change', function () {
var selctedval = $(this).val();
$('.content').hide();
$('.content-' + selctedval).show();
});
});
答案 3 :(得分:0)
这将使用“data-type”属性中的任何值,并将其与您在消息上的“content-”类相匹配。如果没有匹配的消息,则不会显示任何消息。
$('.show-and-hide-content select').on('change', function(){
var selected = $(this).find('option:selected').data('type');
$('.content').addClass('hidden');
$('.content-' + selected).removeClass('hidden');
});
这是 fiddle