2011-08-19 70 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建议一个在另一个上?