如何使单选按钮只读但不禁用?

问题描述 投票:0回答:4

问题“如何使单选按钮只读?”已经被问过

n
次了。但解决方案总是
disabled="disabled"
.

(也可以有复杂的 JavaScript 解决方案,它与

click
change
事件一起工作并防止值的更改,但所有这些通常或多或少都有肮脏的黑客气味。)

disabled="disabled"
的问题/副作用是,它从数据集中“删除”字段,然后不发送到服务器。

我想要的是使单选按钮只读/不可更改——但同时让它们在表单提交时发送到服务器。

disabled
不符合这个要求,
readonly
似乎不适用于单选按钮。

使单选按钮只读而不将其从表单数据集中删除的正确 HTML 属性是什么?

html disabled-input readonly-attribute
4个回答
5
投票

尝试使用一些 CSS:

input[type="radio"].readonly {
  opacity: 0.5; /* not necessary */
  pointer-events: none;
}

0
投票

如果这是你的意思。你有一个

radio button
它有一个值,你不希望删除或更改该值,但你想将它显示给用户可能会通知他的同意。然后我认为这应该有效。

radio button
一个单独分配给它的
name
属性以及像这样的
checked
属性。

<input type="radio " name="my_radio_btn" value="its_value" checked />

这样用户就无法取消勾选


0
投票

这可能看起来有点 hacky,但您可以将单选按钮的值设置为其触发

onclick
事件时的初始状态。

<!DOCTYPE html>
<html>
  <body>
    <input id="button1" type="radio" onmouseover="setValue(this)" onclick="retainValue(this)" checked> Radio Example
    <input id="button2" type="radio" onmouseover="setValue(this)" onclick="retainValue(this)"> Radio Example
    <script>
      var checkboxes = {};
      function setValue(el) {
        if(!(el.id in checkboxes))
          checkboxes[el.id] = el.checked;
      }
      function retainValue(el) {
        if(!(el.id in checkboxes))
          checkboxes[el.id] = el.checked;
        el.checked = checkboxes[el.id];
      }
    </script>
  </body>
</html>

它允许您在页面上拥有任意数量的收音机,前提是每个收音机都有唯一的 ID。

如果你愿意使用 jQuery 那么它会很容易完成。


0
投票

如果最初选中了一个只读单选按钮,您可以禁用组中的所有其他单选按钮:

<input name="my_field" value="A" type="radio" checked="checked"/>
<input name="my_field" value="B" type="radio" disabled="disabled"/>
…

那么用户就不能有效的点击任何地方进行更改;但选中的输入将生成响应字段。

© www.soinside.com 2019 - 2024. All rights reserved.