JQuery正确地禁用和启用一个字段,而不是另一个字段

时间:2010-08-30 14:00:57

标签: jquery

有一个带有onchange功能的选择框,可以启用和显示/禁用并隐藏旁边的标签和文本框。当选择框的值为“1”时,标签正确显示,但由于某种原因,文本框虽然显示但未启用。我做错了什么?

HTML:

<select name="viewMap" id="viewMap" onchange="toggleRadius()">
                    <option value="1" selected="true">Yes</option>
                    <option value="0" >No</option>
                </select>
                <label for="radius" class="radius shown">Default Radius in Miles:</label>
                <input name="radius" type="text" size="5" value="300" class="radius shown" />

javascript:

function toggleRadius()
    {
        if ($('#viewMap option:selected').val() == 1)
        {
            $('.radius').removeClass('hidden').addClass('shown').attr('disabled', 'false');
        } 
        else
        {
            $('.radius').removeClass('shown').addClass('hidden').attr('disabled', 'true');
        }
    }

2 个答案:

答案 0 :(得分:3)

我一直使用

.attr('disabled', 'disabled') 

.removeAttr('disabled') 

禁用/启用内容。我在某处读到.attr('disabled','true')更正确,但我不记得在哪里或为什么。但我会尝试使用.removeAttr('disabled')而不是将其设置为false。

答案 1 :(得分:3)

disabled属性的工作方式略有不同。您应该删除它,而不是将其设置为“false”(有点像“nowrap”属性...)

function toggleRadius()
{
    if ($('#viewMap option:selected').val() == 1)
    {
        $('.radius').removeClass('hidden').addClass('shown').removeAttr('disabled');
    } 
    else
    {
        $('.radius').removeClass('shown').addClass('hidden').attr('disabled', 'true');
    }
}