7

我想要一个特定的表单组件作为单选按钮(一次只能选择一个选项)。我不希望无线电子弹显示,但是,选择其他表示方法,如选择高光或其他方法。这将允许优雅的降级:如果用户浏览器不支持Javascript,它将降级到基本的单选按钮。我希望通过Javascript或CSS隐藏项目符号按钮。任何人都知道吗?谢谢。HTML单选按钮:隐藏项目符号

+0

+1将“671”从当前的“666”中移出:) – 2013-04-19 22:26:16

+0

有一些[样例](http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/)造型单选按钮在那里。作者做得非常好,因为[示例](http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/example/)通常在JavaScript禁用的情况下呈现。 – wsanville 2011-03-02 05:32:53

回答

2

如果我理解正确的这个,你想单选按钮,但你不想要的按钮自己出现。请记住,只是删除按钮不会提供您正在寻找的用户体验。你需要有某种形式的用户反馈。

你有两个选择:

1)使用javascript/jquery进行编程。考虑到这一点,我会建议你使用单选按钮作为开始的占位符,然后使用JavaScript(理想情况下通过jquery插件),它将重画页面,并用可点击的div替换按钮和动态更改的隐藏字段值。

2)使用CSS meta class of :checked,但不幸看起来没有跨浏览器支持。

-1

你可以通过添加这个样式=“list-style:none;”

+0

只能添加在ul/li标签上。 – 2014-09-18 09:03:51

2
$('#js input[type=radio]').hide(); 
+3

如果OP使用jQuery,那会很棒,但他们从未提及过。 – alex 2011-03-02 05:33:54

+0

加入 - 在这种情况下,至少假设阅读熟悉jQuery是合理的。 – 2013-10-11 09:55:03

1
var inputs = document.getElementById('my-form').getElementsByTagName('input'); 

for (var i = 0, inputsLength = inputs.length;i < inputsLength; i++) { 

    var input = inputs[i]; 

    if (input.getAttribute('type') == 'radio') { 
     input.style.display = 'none'; 
    } 

} 

另外,如果您的浏览器支持它(querySelectorAll in document)...

document.querySelectorAll('#my-form input[type="radio"]').style.display = 'none'; 
1

我不认为你可以用CSS隐藏它。你必须隐藏单选按钮,然后用JS代替功能。也许一个可选择的列表将适用于你。

从jQuery用户界面可选:http://jqueryui.com/demos/selectable/

<input type='radio' value='1' name='rad' class='radio'> 
<input type='radio' value='2' name='rad' class='radio'> 
<input type='radio' value='3' name='rad' class='radio'> 

<ol id="selectable" style='display:none'> 
    <li class="ui-widget-content">Item 1</li> 
    <li class="ui-widget-content">Item 2</li> 
    <li class="ui-widget-content">Item 3</li> 
</ol> 

$(function() { 
    $('.radio').hide(); 
    $("#selectable").show().selectable({ 
     selected: function(event, ui) {//figure out which was selected and mark the hidden radio button} 
    }); 
}); 
4

我有一个简单的解决方案的工作,我有一个标签是围绕我的单选按钮与代表事物的图像进行选择:

<label> 
    <input type="radio" name="foo"> 
    <img src="..."> 
</label> 

然后我应用了以下样式:

label { 
    float: left; 
    width: 100px; 
    height: 100px; 
    position: relative; 
    cursor: pointer; 
} 

label input[type=radio] { 
    opacity: 0; 
} 

label img { 
    position: absolute; 
    top: 0; 
    left: 0; 
    opacity: 0.5; 
} 

:checked + img { 
    opacity: 1; 
} 

本质上,每个label成为一个规则大小的盒子,完全由img填充。收音机本身使用opacity:0隐藏。用户可以知道选中的选项为img旁边的选中的收音机将是不透明的,而其他人是半透明的。你可以很容易地做各种其他类型的效果。

我喜欢的是窗体仍然很简单,它只是一组单选按钮。

我对单选按钮使用了不透明度,而不是display:nonevisibility:hidden,因为它们仍然在tabindex中,并且表单仍然可以通过键盘访问。

+0

这是很棒的东西,男人,谢谢! :) – elias 2013-05-28 14:14:40

+0

使用不透明的想法是辉煌的! – Andrey 2015-11-03 21:30:06

4

隐藏单选按钮(不失方便,当然)的就只有这一点可以用下面的CSS来实现:

input[type="radio"] { 
    left: -999em; 
    position: absolute; 
} 

使用opacity: 0;并不理想,因为按钮仍然存在,服用在页面中增加空间。把它放在视线之外是要走的路。

-1

只需插入: style="display:none;" 里面每"<input type='radio'…>"标签。

这使得子弹不可见,但留下标签显示。

+0

这样可以防止在禁用JavaScript的情况下的优雅降级,因为子弹仍然会隐藏。将'display'设置为'none' *每个JavaScript *将是一个选项。附: downvote是**不**从我。 – 2013-04-19 22:16:10