将复选框/选择和输入的控制功能合并为一个
merge control functions for checkboxes/ selects and inputs into one
我有以下函数可以启用/禁用表单中的提交按钮。这三个函数都可以单独工作,但如果有可能,如何将它们合并为一个?
现在,如果我选择了一个选项和一个复选框,按钮会被启用,但如果我取消选择一个选项,提交按钮会再次被禁用,但我想让他在选择一个复选或选项或填写一个字段时启用。
$('#order input[type="text"]').change(function(){
if(($(this).val().length > 0))
$('#submit').prop('disabled', false);
else
$('#submit').prop('disabled', true);
});
$('#order :checkbox').change(function(){
if($(this).not('.others').is(':checked'))
$('#submit').prop('disabled', false);
else
$('#submit').prop('disabled',true);
});
$('#order select').not('#sel_option_img').change(function(){
if($(this).val() != '')
$('#submit').prop('disabled', false);
else
$('#submit').prop('disabled',true);
});
});
对不起,我的英语不太好。
提前感谢您的帮助。
编辑
链接到小提琴以更好地理解:
http://jsfiddle.net/zVS3t/4/
试试这个:
var orderText = $('#order input[type="text"]');
var orderCheck = $('#order :checkbox');
var orderSelect = $('#order select').not('#sel_option_img');
var enableOrDisableSubmit = function() {
var textEntered = orderText.val().length > 0;
var orderChecked = orderCheck.not('.others').is(':checked');
var orderSelected = orderSelect.val() != '';
if (textEntered && orderChecked && orderSelected)
$('#submit').prop('disabled', false);
else
$('#submit').prop('disabled', true);
};
orderText.change(enableOrDisableSubmit);
orderCheck.change(enableOrDisableSubmit);
orderSelect.change(enableOrDisableSubmit);
请注意,我们将jQuery引用分配给变量,这样我们就可以多次使用它们,而无需每次都遍历DOM。
看看这个:
更新:
html更改:<option value="0">--please select--</option>
检查所有输入的功能:
function checkinputs() {
// if the select is defauld OR we have text inputs empty OR we dont have even one checkbox checked
if( $("#order select").val() == "0" || $('#order input[type="text"]').filter(function(){return this.value == ""}).length || !$('#order input[type="checkbox"]').is(':checked') ) {
$('#submit').prop('disabled', true);
} else {
$('#submit').prop('disabled', false);
}
}
"#order"
:的简单change
和input
事件
$( "#order" ).on('change input',function() {
checkinputs();
});
演示:http://jsfiddle.net/zVS3t/30/
相关文章:
- 将两个Json提要合并为一个,并按时间排序
- 将javascript对象(属性+值)合并到一个对象中
- jQuery将代码合并为一个函数
- 将多个jquery函数合并为一个
- 将嵌套数组的元素合并到一个大数组中
- MongoDB聚合将两个不同的字段合并为一个并获取计数
- 如何将多个 Blender JSON 模型合并到一个 Three.js Object3D 对象中
- 在angularJS中合并来自一个服务的两个数组
- 如何使用ES6将两个具有函数的对象合并为一个新对象
- 将文档的MongoDB字段合并到一个文档中
- 将两个图像合并为一个,并使用javascript进行溢出隐藏
- 将值和属性从一个对象合并到另一个对象
- 将两个云代码函数合并为一个函数
- 如何在Three.JS中将两个BufferGeometry合并为一个BufferGeometrics
- 有没有一个lodash函数可以合并两个对象并删除其中一个对象的属性(如果它们没有)'不存在于另一个中
- 如何将两个json对象合并为一个json
- 合并一个从链接传递到jQuery模组的变量,稍后通过ajax发布
- Javascript合并一个对象和一个数组
- jQuery在选择器中合并一个变量
- 获取错误:试图合并一个对象,而不是得到[object object]