Javascript 基于选择启用/禁用输入(jQuery)

Javascript 基于选择启用/禁用输入(jQuery),javascript,jquery,html,css,Javascript,Jquery,Html,Css,似乎不起作用。我一定是做错了什么。您需要将“disabled”设置为true才能真正禁用某些内容。例如,如果您想禁用“其他”并启用其他所有功能,那么我建议说: $('#state').change(function () { if ($('#state Other:selected').text() == "Other"){ $('#province').attr('disabled', false); alert(1); } else {

似乎不起作用。我一定是做错了什么。

您需要将“disabled”设置为
true
才能真正禁用某些内容。例如,如果您想禁用“其他”并启用其他所有功能,那么我建议说:

$('#state').change(function () {
    if ($('#state Other:selected').text() == "Other"){
        $('#province').attr('disabled', false);
        alert(1);
    } else {
        alert(2);
    }
});
这将使用
$(“#省”).val()
,这通常是从jQuery中的下拉列表中获取所选选项的当前值的首选方法。如果值为“其他”,则“禁用”属性设置为
true
,否则设置为false。

您应该使用而不是
.attr('disabled',false)
。你也应该

编辑:事后考虑。如果要禁用该字段,您可能希望“清空”已键入字段的文本,因此我添加了一个
.val(“”)
,如果您还想隐藏它,您可以将
.hide()
.show()
添加到这两个案例中

我将向您展示一个工作版本:

$('#state').change(function () {
    $("#province").attr("disabled", $("#state").val() == "other");
});

将“触发”一个更改事件,在绑定时有效地运行该函数一次。这样,将根据运行代码时选择的状态禁用/启用省。如果没有它,即使该州不是“其他”州,该省也将可用,除非您在html中的
标记中添加了
disabled='disabled'

谢谢!你能再解释一下触发器吗。我真的不明白。@WmasterJ-添加了一些解释如果我想对多个选择使用相同的脚本怎么办?有通用的吗?谢谢
$('#state').change(function () {
    $("#province").attr("disabled", $("#state").val() == "other");
});
var $state = $('#state'), $province = $('#province');
$state.change(function () {
    if ($state.val() == 'other') {
        $province.removeAttr('disabled');
    } else {
        $province.attr('disabled', 'disabled').val('');
    }
}).trigger('change'); // added trigger to calculate initial state