启用具有不同元素的复选框
Enabling checkbox with different elements
好吧,我已经为一个网站编写了一段时间的代码,这是我找不到的第一个"无法克服"的问题,所以现在我求助于你们,专家们。
在我的表单上,我有三个下拉菜单,一个文本框和一个禁用复选框。我希望它能工作,这样当用户从每个下拉菜单中选择一个选项并在文本框上写下一些内容时,复选框就会启用。
我在寻找解决方案时发现了这段代码,它与我的问题非常相似。然而,当我尝试添加另一个下拉菜单时,当我从第一个菜单中选择一个选项时,它仍然会启用该按钮,并完全忽略第二个菜单。对不起,我是Jquery/JavaScript的新手,我只是认为当两个菜单上的类名相同时(Jquery类选择器:('.dropload')),它应该是这样工作的。
我还发现了一个与文本框类似的代码。我只是不知道如何组合这些代码,所以它会按照我想要的方式运行。
请在此处查看:http://jsfiddle.net/JKmkL/109/
$(document).ready(function() {
$('.required').change(function() {
var done=true;
$('.required').each(function(){
if(!$(this).val()){
$('.myCheckBox').prop('disabled',true);
done=false;
return false;
}
});
if(done){$('.myCheckBox').prop('disabled',false);}
});
});
并将类required
添加到元素中。
编辑:
上面的代码假设默认的<option>
具有value=""
。如果没有,您可以使用http://jsfiddle.net/JKmkL/114/
$(document).ready(function() {
$('.required').change(function() {
var done=true;
function quit(){
$('.myCheckBox').prop('disabled',true);
done=false;
return false;
}
$('.required.dropdown').each(function(){
if($(this).children(':selected').hasClass("disablenext")){
return quit();
}
});
$('.required[type=text]').each(function(){
if(!$(this).val()){
return quit();
}
});
if(done){$('.myCheckBox').prop('disabled',false);}
});
});
编辑2:
如果您想在选中复选框时显示div,并在禁用复选框时隐藏它,请使用
JavaScript:
$(document).ready(function() {
$('.required').change(function() {
var done=true;
function quit(){
$('.myCheckBox').prop('disabled',true).removeAttr('checked');
done=false;
$('#div2').addClass('hide');
return false;
}
$('.required.dropdown').each(function(){
if($(this).children(':selected').hasClass("disablenext")){
return quit();
}
});
$('.required[type=text]').each(function(){
if(!$(this).val()){
return quit();
}
});
if(done){$('.myCheckBox').prop('disabled',false);}
});
$('.myCheckBox').click(function(){
$('#div2')[(this.checked?'remove':'add')+'Class']('hide');
});
});
CSS:
.hide{display:none}
请在此处查看:http://jsfiddle.net/JKmkL/133/
我假设下拉列表的默认值是value="
$('#form_submit_button').click(function(){
$('.checkbox').attr('disabled',true);
var all_selected = true;
$('.dropdown').each(function(){
if(!$(this).val())
{
all_selected = false;
}
});
if(!$('#text_box').text())
{
all_selected = false;
}
if(all_selected)
{
$('.checkbox').attr('disabled',false);
}
});
首先,假设三个下拉列表的id分别称为d1
、d2
和d3
;文本框为txt
;复选框为CCD_ 8。然后,您可以定义一个函数来确定何时必须启用复选框:
function shouldEnableCheckbox() {
var nonEmptyFields = $("#d1,#d2,#d3,#txt").filter(function() {
return this.value;
});
return nonEmptyFields.length == 4;
}
基本上,您可以选择所有4个元素,过滤那些非空的元素,并将得到的过滤数组与4进行比较。如果为true,则表示您应该启用该复选框。
然后,将change
事件处理程序分配给所有4个元素,调用上一个函数,并将结果分配给复选框的disabled
属性:
$("#d1,#d2,#d3,#txt").change(function() {
$("#chk").prop("disabled", !shouldEnableCheckbox());
});
这是正在工作的DEMO和另一个正在工作的、更通用的DEMO它使用类而不是id来识别所需的元素。
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 如何获取字段集元素中复选框的所有ID
- 启用具有不同元素的复选框
- 验证元素值和复选框的Javascript
- 如何使用复选框启用多个元素
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- 我无法检查输入复选框元素
- 根据MVC列表框和复选框的值更改标记元素
- 复选框元素在未选中时从serialize()中消失
- 不能在复选框旁边显示元素
- 复选框将如何通过javascript触发html中的另一个输入元素
- jQuery-在每个复选框中获取下一个元素
- 如何获取与提交表单上所选复选框相同行的文本元素
- jQuery 单击外部元素可向上或向下移动包含选中复选框的无序列表项
- 切换复选框 - 单击父 DIV 元素
- 单击复选框时的角度显示一个元素
- 选中父元素单击上的复选框
- 选中切换元素复选框
- 隐藏显示元素复选框
- 如何在JQuery中单击最近的元素(复选框)时禁用下一个元素(文本区域)