【问题标题】:Trouble disabling a text field based on dropdown selection (JavaScript)基于下拉选择 (JavaScript) 禁用文本字段时出现问题
【发布时间】:2014-07-31 14:42:48
【问题描述】:

我有一个带有下拉菜单的表单,后跟一个文本输入字段。默认情况下禁用输入框。从菜单中选择一个指定的选项应该启用文本字段。

我做了一些研究,发现了许多类似的问题,但是似乎没有一个解决方案有效。我在 jsfiddle 上尝试了一个非常简单的代码,以查看问题是否出在解决方案本身,或者特别是我的代码。我的原始代码不起作用,简化版本也不起作用。这是简化的代码示例:

HTML:

<select id="menu" onChange="checkOption()">
    <option value="A">Option A</option>
    <option value="B">Option B</option>
    <option value="C">Option C</option>
    <option value="D">Option D</option>
</select>
<input type="text" id="input" disabled>

JavaScript:

function checkOption() {
    if(document.getElementById("menu").value != "A") {
        document.getElementById("input").disable = 'false';
    }
    else {
        document.getElementById("input").disable = 'true';
    }
}

无论我点击什么,文本框都保持禁用状态。我尝试删除默认禁用,但仍然没有运气。我也尝试了各种其他解决方案,但这是最直接的,这就是为什么我不明白为什么它不起作用。

这可能是我没有看到的非常明显的东西......我对此非常陌生,所以如果有人愿意解释我的问题,我将非常感激。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    这是disabled 不是disable

    document.getElementById("input").disabled = true;
    

    您还可以通过将this 传递到您的处理程序并引用它来清理代码(也不需要if, else - 只需disable 直接基于条件:

    <select id="menu" onChange="checkOption(this)">
    
    function checkOption(obj) {
        var input = document.getElementById("input");
        input.disabled = obj.value == "A";
    }
    

    Aaaa 和小提琴:http://jsfiddle.net/23EpC/

    【讨论】:

    • 此外,这些值必须是真正的布尔值,而不是字符串(因为您现在可能正在输入:)
    • @Pointy - 是的 - 我在那里的时候也做了一些重构:D
    • @tymeJv 我尝试了禁用和禁用(出于某种原因使用了不同的解决方案)但仍然没有工作。
    • @Laya302 这是因为您将标志设置为非空字符串,所以 "false" 就像 true 和 "true" - 您必须将标志设置为布尔值。
    • @Pointy 你这是什么意思?
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2022-01-05
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多