如何设置2个更改效果以影响1个选择

时间:2013-05-31 17:04:30

标签: jquery

我有3个选择。当first on first为2时,则禁用第三个选择。当第二个选择的值为3时,则禁用第三个选择。

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

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

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

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

我想这样做,因为当我设置第一个选择为2和第二个选择到三个第三个选择被禁用,但是当我改变第一个选择值时,第二个选择被启用(第二个选择是还是3)。这是因为使用了$(' .one')。触发器('更改')。

编辑:纠正错误的jsfiddle链接。

3 个答案:

答案 0 :(得分:5)

难道你不能将整个事情减少到:

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

<强> jsFiddle example

答案 1 :(得分:2)

您可以定义一个检查select s(.one.two.)并启用/禁用第三个select的函数。然后将该函数与select的'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

另请参阅此 short demo

答案 2 :(得分: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)