2011-08-19 73 views
2

我試圖阻止用戶使用jquery或javascript更改單選按鈕的狀態。我可以對殘疾人做這件事,但我不喜歡灰色的外觀。我向用戶展示了我的一個模型的真/假狀態,所以我不希望他們能夠改變它。組中只有一個單選按鈕,根據模型檢查(true)或未選中(false),因此他們不能取消選中它,但他們可以檢查並更改單選按鈕狀態。單選按鈕不會在表單中提交,因此它僅用於從數據庫/模型中讀取數據,但如果它們將其更改爲實際在數據庫中的相反值,那麼該用戶體驗不佳。這是我在jQuery和html結構上的最新嘗試。阻止用戶更改單選按鈕的狀態

<input type="radio" checked="checked"> 

<input type="radio"> 

和jQuery的

$(document).ready(function() { 
    $(input[type = "radio"]).change(function() { 
     $(this).removeAttr("checked"); 
    }); 
}); 

回答

4

試試這個

$(document).ready(function() { 
    $('input[type = "radio"]').change(function() { 
     return false; 
    }); 
}); 
+0

this.checked = false;意味着le單選按鈕將始終未被選中。在頁面加載時默認選中按鈕會怎麼樣?點擊將取消選中它,但我們希望它保持不變。回覆錯誤似乎是一個更好的主意。 – Julien

+0

@Nunien:我同意,編輯我的答案。 – ShankarSangoli

2

嘗試使用禁用的財產,因爲這是它是什麼,但後來改變使用單選按鈕CSS樣式。

但是,這聽起來並不像一個非常直觀的用戶體驗。用戶知道什麼是灰色的意思,你可能不應該那樣搞砸!

4

如何

<input type="radio" onclick="return false;"/> 

$(document).ready(function() { 
    $(input[type = "radio"]).click(function() { 
     return false; 
    }); 
}); 

+0

這就是我一直在尋找的 – AdRock

0

所以一旦我得到了我的選擇正確的工作引號。

$("input[type = radio]") 

$("input[type = 'radio']") 

有對改變功能奏效

this = false; 
$(this).prop("checked", false); 
$(this).attr("checked", false); 
$(this).removeAttr("checked"); 
$(this).removeProp("checked"); 

代碼一堆或選擇有優勢,使用一個比其他?四個jquery函數中的任何一個操作標籤的屬性/屬性有什麼不同?基於文檔,它看起來像prop/removeProp只是在1.6中添加,attr/removeAttr是在1.0中添加的,所以attr/removeAttr僅僅是爲了遺留的目的,或者是jQuery建議一個在另一個上?