Jquery已禁用表单中的选择标记

Jquery已禁用表单中的选择标记,jquery,Jquery,我有一张表格 <form action="#" method="POST"> <select id="packageId"> <option value="0">Option 0</option> <option value="1">Option 1</option> </select> <select id="duration"> <option value

我有一张表格

<form action="#" method="POST">
  <select id="packageId">
    <option value="0">Option 0</option>
    <option value="1">Option 1</option>
  </select>
  <select id="duration">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  </select>
</form>
此Jquery无法首先设置disabled=true。我必须单击选项1,然后返回选项0以使其脱盐。有人能帮我吗?

使用
.prop()

$(文档).ready(函数(){
$(文档).on('change','#packageId',function(){
if($(this.val()='0'){
$(“#持续时间”).prop('disabled',true);
}否则{
$(“#持续时间”).prop('disabled',false);
}
});
});

选项0
选择1
1.
2.
3.
4.

对于初始设置禁用状态,您需要在添加更改处理程序后触发更改事件

如果没有动态添加select元素,则不需要使用事件委派

$(document).ready(function () {
    $('#packageId').on('change', function () {
        $("#duration").prop('disabled', $(this).val() != '1');
    }).trigger('change');
});
演示:


如果元素是动态添加的,那么您需要在添加select元素后触发change事件

$(document).ready(function () {
    $(document).on('change', '#packageId', function () {
        $("#duration").prop('disabled', $(this).val() != '1');
    })
    //then once the select elements are added trigger the event
    $('#packageId').trigger('change');
});

演示:

您应该使用.prop(),无论元素是动态创建的,它都是动态创建的。嗯,奇怪,在您的小提琴中,它可以按照我的要求工作,但在我的代码中不是。在我的代码中,它被禁用为initial,这一部分是正确的,但无论我如何使用packageId更改Select标记,它仍然被禁用。啊,我认为你的方式在引导Select中崩溃了。在select标记中,我删除了“class='selectpicker'”,它工作得很好,当我重新打开它时,问题就出现了。你知道为什么吗?
$(document).ready(function () {
    $(document).on('change', '#packageId', function () {
        $("#duration").prop('disabled', $(this).val() != '1');
    })
    //then once the select elements are added trigger the event
    $('#packageId').trigger('change');
});