防止用户改变单选按钮的状态

时间:2011-08-19 02:08:17

标签: javascript jquery html asp.net-mvc radio-button

我试图阻止用户使用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 个答案:

答案 0 :(得分:6)

怎么样

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

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

答案 1 :(得分:4)

试试这个

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

答案 2 :(得分:2)

尝试使用disabled属性,因为它就是这样,但随后使用CSS更改单选按钮的样式。

然而,这听起来并不像一个非常直观的用户体验。用户知道什么是灰色的意思,你可能不应该搞砸了!

答案 3 :(得分: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暗示一个在另一个上面?