javascript - 将复选框/选择和输入的控制功能合并为一个

标签 javascript jquery select checkbox input

我有以下功能可以启用/禁用表单中的提交按钮。这三个单独工作都很好,但是如果可能的话如何将它们合并为一个?

现在,如果我选择一个选项和一个复选框,则该按钮将被启用,但如果我取消选择一个选项,则提交按钮将再次被禁用,但我想让他在选择一个复选框或选项或一个字段时启用已填写。

$('#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);
    
    });

});

抱歉我的英语可能不够完美。

预先感谢您的帮助。

编辑

链接到 fiddle 以便更好地理解:

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。

关于javascript - 将复选框/选择和输入的控制功能合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24895880/

相关文章:

mysql - 可以以任何方式选择子选择中的别名

javascript - 将数据从JS转HTML显示到表格

javascript - Google 放置 API 图标

javascript - 为什么我无法使用代理正确获取数据?

javascript - jQuery - 根据父类处理子点击

javascript - 如果单击的类有特定文本,则运行 jquery

菜单项的 JavaScript 旋转在单击后卡住

PHP PDO 多选,多条件

javascript - 街景 View 在加载时在街道图像上提供带有海军按钮的黑框

php - 如何使用来自另一个表的随机记录更新给定的 mySQL 表