2

我有3个选择。当第一个值为 2 时,禁用第三个选择。当第二个选择的值为 3 时,第三个选择被禁用。

这是 jfiddle 链接:http: //jsfiddle.net/UEpQn/1/

我的问题:我想在一个 jQuery 函数中插入我的 2 个 jQuery 函数,它会对任何一个做出反应

$('.one').trigger('change');

或者

$('.two').trigger('change');

我想这样做是因为当我将第一个选择设置为两个并且第二个选择设置为三个时,第三个选择被禁用,但是当我将第一个选择的值从 2 更改时,第三个选择被启用(并且第二个选择仍然是 3) . 这是因为使用了 $('.one').trigger('change')。

编辑:更正了错误的 jsfiddle 链接。

4

3 回答 3

5

你不能把整个事情简化为:

$('select').change(function (e) {
    $('.three').prop('disabled', ($('.one').val() == '2' || $('.two').val() == '3'));
})

jsFiddle 示例

于 2013-05-31T17:14:41.073 回答
2

您可以定义一个函数来检查selects (.one.two.) 并启用/禁用第三个select。然后将该函数与两个selects 的 'change' 事件绑定。
像这样的东西:

var selectsChanged = function (e) {
    if (($('.one').val() == '2') || ($('.two').val() == '3')) {
        $('.three').prop('disabled', true);
    } else {
        $('.three').prop('disabled', false);
    }
};

$(document).ready(function(e) { 
    //$('.one').change(selectsChanged);
    //$('.two').change(selectsChanged);
    $('.one, .two').change(selectsChanged);
});
// Thx @ Bali Balo & Eran Medan for pointing out the shorter alternative

另请参阅这个简短的演示

于 2013-05-31T17:11:57.583 回答
0
$('form').on({"change":function(event){
  if(($(this).is('.one') && $(this).val()==2) ||
     $(this).is('.two') && $(this).val()==3){
    $(this.form).find('.three').prop("disabled",true);
  }else{
    $(this.form).find('.three').prop("disabled",false);
  }
}},'.one, .two',null)
于 2013-05-31T17:15:06.110 回答