只有一个值等于并在多选中选择
only one value is equal to and selected in multiple select
我有一个与此完全相同的问题:当选择的选项等于时,jQuery隐藏/显示输入
然而,当您转到多选时,它不起作用,当选择特定选项时,它起作用,但当您选择旁边的另一个选项时,就会停止工作。
问题是:如果选择了选项4,我想显示div(#showme),即使选择了选项3&4,所以在任何给定的时间,如果选择了选项4,div应该显示。
这是Javascript&到目前为止,我有HTML:(请注意,我在这个表格中有不止一个选择)
$('select[multiple]').each(function() {
$(this).change(function() {
obj = '#' + $(this).attr('id') + '_desc';
if($(this).val() == "4") {
$(obj).parent().parent().parent().removeClass('hide');
$(obj).css('display','block');
}
else {
$(obj).parent().parent().parent().addClass('hide');
$(obj).css('display','none');
}
});
});
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label for="feedback_q1">Hello?</label>
<select class="form-control selectpicker show-tick" name="feedback_q1[]" id="feedback_q1" multiple="multiple" title="Choose...">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
</div>
</div>
<div class="row hide">
<div class="col-sm-12">
<div class="form-group">
<label for="feedback_q1_desc">desc <span class="glyphicon glyphicon-pencil"></span></label>
<textarea name="feedback_q1_desc" id="feedback_q1_desc" class="form-control" data-toggle="tooltip" data-placement="top" title="desc" rows="2"></textarea>
</div>
</div>
</div>
感谢的帮助
当进行多项选择时,$(this).val()将包含一个值数组。遍历它们并检查"4"。如果$(this).val()为null,则没有选择任何内容。
下面的示例正是您想要的,包括我们在评论和聊天中广泛交流后的更改,包括您最近请求处理文档加载时预先选择的值。
此外,您丢失了引导程序JavaScript文件,并且已经包含的文件的顺序和位置都不正确。下面的示例包括所有顺序和位置正确的.js和.css文件。
HTML
<!-- These should be in head -->
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.3/css/bootstrap-select.min.css" rel="stylesheet" />
<!-- Body content -->
<div class="row">
<div class="col-sm-12">
<div class="form-group">
<label for="feedback_q1">Hello?</label>
<select class="form-control selectpicker show-tick" name="feedback_q1[]" id="feedback_q1" multiple="multiple" title="Choose...">
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
<option value="4" selected>4</option>
</select>
</div>
</div>
</div>
<div class="row hide">
<div class="col-sm-12">
<div class="form-group">
<label for="feedback_q1_desc">desc <span class="glyphicon glyphicon-pencil"></span>
</label>
<textarea name="feedback_q1_desc" id="feedback_q1_desc" class="form-control" data-toggle="tooltip" data-placement="top" title="אנא פרט" rows="2"></textarea>
</div>
</div>
</div>
<!-- These should be at the end of <body> -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.6.3/js/bootstrap-select.min.js"></script>
JavaScript
// Check a select for a specific value and show/hide div based on selection
// Select will come in as a jQuery object
function checkSelect(control) {
// Build selector for associated description field
var selector = '#' + control.attr('id') + '_desc';
// Handle scenario where nothing is selected
if (control.val() == null) {
$(selector).parent().parent().parent().addClass('hide');
$(selector).css('display', 'none');
return;
}
// Get array containing selected values
var vals = control.val();
// Handle scenario where something is selected
for (i = 0; i < vals.length; i++) {
if (control.val()[i] == "4") {
$(selector).parent().parent().parent().removeClass('hide');
$(selector).css('display', 'block');
return; // Stop checking as we know the value we want is selected
} else {
$(selector).parent().parent().parent().addClass('hide');
$(selector).css('display', 'none');
}
}
}
// This runs when the DOM is ready
$(function () {
// Bind selectpicker
$('.selectpicker').selectpicker();
// Iterate through all multiple selects
$('select[multiple]').each(function () {
// Check for pre-selected values when page first loads
checkSelect($(this));
// Bind to change event so that values are checked after something is changed
$(this).change(function () {
checkSelect($(this));
});
});
});
演示(第三个版本):http://jsfiddle.net/BenjaminRay/7ckp7epf/
<div class="form-group">
<select class="form-control selectpicker show-tick" name="Status" id="Status" multiple="multiple" title="Choose...">
@foreach (SelectListItem item in ViewBag.Status)
{
if (item.Selected == false)
{
<option value="@item.Value">@item.Text</option>
}
else
{
<option value="@item.Value" selected>@item.Text</option>
}
}
</select>
</div>
相关文章:
- 我有多个复选框,并希望为其中 2 个制定规则,以便如果我选择 1 个,则无法选择另一个
- 正在将无序列表转换为选择..但有一个转折
- 如果所有单选框在jQuery中都有一个选择,则显示一个元素
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- 我如何在 html 中复制(甚至有一个按钮来选择它)一个 document.getelementbyid 输出字段
- 如何创建 HTML 文本框,该文本框顶部有一个水平菜单选项卡可供选择
- 我有一个 HTML 多选框,之前没有选择任何内容.我需要验证是否应该在 javascript 中至少选择一个
- 在 CSS 中有一个单独的伪选择器,以显示有关一行中多个元素的信息
- 我有一个表单,我想隐藏一些文本字段,直到在下拉菜单上选择一个选项 y
- 我有一个带有选择的表单,可以创建元素.我怎么能做到这一点元素只创建一次
- 是否有一个 jQuery 选择器查找不存在的子字符串
- jQuery填充的日期选择器有一个月不同步
- 文档选择中的索引错误,而所选文本有一个点
- 选择除隐藏之外的所有输入(但有一个例外)
- 检查我选择的标记中是否有一个更改为具有相同的类
- 是否有一个js事件在选择开始时被触发
- 如果至少有一个输入具有值或某个选择更改了默认值,则启用/禁用切换按钮
- 当类型=“0”时,我怎么能有一个预先选择的输入;文件”;
- 我有DIV和它的子DIV,我想用jQuery选择最后一个DIV.父DIVS具有id
- 使用jquery选择一个选项,并且在select元素中也有一个onchange()