2010-08-30 20 views
1

有一個帶有onchange功能的選擇框,可啓用並顯示/禁用並隱藏旁邊的標籤和文本框。當選擇框的值爲「1」時,標籤顯示正確,但由於某種原因,文本框雖然顯示爲未啓用。我究竟做錯了什麼?JQuery正確禁用和啓用一個字段,但不是另一個

的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'); 
     } 
    } 

回答

3

我一直使用

.attr('disabled', 'disabled') 

.removeAttr('disabled') 

禁用/啓用的東西。我在某處閱讀.attr('disabled','true')更正確,但我不記得在哪裏或爲什麼。但我會嘗試使用.removeAttr('禁用'),而不是將其設置爲false。

+2

這是因爲瀏覽器的決定是基於屬性是否有或沒有,沒有什麼它的價值是。在舊的HTML日子裏,這個屬性甚至沒有價值;它只是'

content
'。但是在XML中,你不能只擁有一個沒有值的屬性,所以他們決定最簡單的方法就是讓這個值等於屬性名稱:'
content
'。 – 2010-08-30 14:15:08

+0

啊,這是有道理的!謝謝你的信息安東尼 – Patricia 2010-08-30 14:20:55

3

禁用的屬性有點不同。你應該將其刪除,而不是將其設置爲「假」(有點像「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'); 
    } 
} 
相關問題