【发布时间】:2011-08-29 01:01:09
【问题描述】:
从 UI 的角度来看,是拥有一组具有取消选中功能的 RadioButton 更好,还是拥有一组独有的 CheckBox,这意味着一次只能选中一个?
更新:
我没想到会有这样的负面反应。如果我举一个更接近它的使用方式的例子,也许会有所帮助。
我有一个充满数据绑定内容的 GridView。用户可以选择其中一行作为“主要”行,但这不是必需的。新示例:
$(":radio").click(function() {
if (this.previous) {
this.checked = false;
}
this.previous = this.checked;
});
$(":checkbox").click(function() {
$(":checkbox").not(this).prop("checked", false);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Choose a primary city and state (if applicable).<br />
<table><tr><td>
<table border="1" >
<tr><td>Primary</td><td>City</td><td>State</td></tr>
<tr><td><input type="radio" name="radio" /></td><td>Pahokee</td><td>Flordia</td></tr>
<tr><td><input type="radio" name="radio" /></td><td>Palatka</td><td>Flordia</td></tr>
<tr><td><input type="radio" name="radio" /></td><td>Palm Bay</td><td>Flordia</td></tr>
<tr><td><input type="radio" name="radio" /></td><td>Palm Beach Gardens</td><td>Flordia</td></tr></table></td><td> </td><td><table border="1" >
<tr><td>Primary</td><td>City</td><td>State</td></tr>
<tr><td><input type="checkbox" /></td><td>Pahokee</td><td>Flordia</td></tr>
<tr><td><input type="checkbox" /></td><td>Palatka</td><td>Flordia</td></tr>
<tr><td><input type="checkbox" /></td><td>Palm Bay</td><td>Flordia</td></tr>
<tr><td><input type="checkbox" /></td><td>Palm Beach Gardens</td><td>Flordia</td></tr>
</table></td><tr>
</table>
我应该包括一个额外的控件来取消选中“主要”,还是只是扩展 CheckBox 或 RadioButton 的功能?
如果您认为额外的 RadioButton 会在标题中出现在哪里?
顺便说一句,看起来需要 JavaScript 才能让 RadioButtons 在 GridView 中正常工作,因为 ASP.Net 修改了 GroupName。
更新 2:
另外,请参阅 ASP.NET AJAX 扩展器MutuallyExclusiveCheckBox
【问题讨论】:
-
颠倒这两个元素的功能有什么意义?它们有非常具体的用法,你可能会通过改变它来混淆人们。我要说的是,两者都是“不好的做法”。
-
您的示例首先在控件的选择方面存在一些问题 - 您是否熟悉
<label>元素和for=""属性,或者您的示例是否只是为了速度而忽略了它们? -
我认为共识非常明确,您应该保持单选按钮功能不变 - 或者更确切地说,您不应该依赖用户发现他们可以做一些非标准的事情来完成它.在您的示例中,与其说功能有害,不如说它是不可发现的。
-
这是您的示例的修改版本,带有“不适用”选项,以及一些柔和的样式以突出两组之间的差异。 jsfiddle.net/5fN2J/7
标签: asp.net html gridview user-interface