表格内的单选按钮

Posted

技术标签:

【中文标题】表格内的单选按钮【英文标题】:Radio button inside table 【发布时间】:2016-01-01 16:45:26 【问题描述】:

我有一组单选按钮放在表格里面,代码是这样的:

<table class="table table-responsive">
    <thead>
        <tr>
            <th>Courier</th>
            <th>Service</th>
        </tr>
     </thead>
     <tbody>
        <form>
        <tr>
            <td>
                 <div class="radio">
                      <label><input type="radio" name="optradio">TIKI</label>
                 </div>
            </td>
            <td>
                  Regular Shipping
            </td>
         </tr>
         <tr>
             <td>
                 <div class="radio">
                      <label><input type="radio" name="optradio">JNE</label>
                 </div>
             </td>
             <td>
                  Express Shipping
             </td>
         </tr>
         </form>
     </tbody>
 </table>

当我点击其中一个 Courier 单元格(例如 JNE)时,按钮被选中,现在我想在点击 Express Shipping 时也选中该按钮,我该怎么做?并且服务栏的垂直对齐与快递栏的高度不一样,如何解决?我使用引导程序。

【问题讨论】:

您需要一个复选框吗? @ManojKumar - 我想当您再次阅读第一句话时,他会问他如何单击“快递运输”并选择快递单选框。这就是我的阅读方式,主要是因为 2 种运输类型的复选框听起来不正确。 face-palm :(你有一个有效的点@Jesse 我自己读了两遍,哈哈。我在下面的回答应该会有所帮助 @Jesse 删除了我的答案,但您也可以添加引导 css 并解决对齐问题vertical align of Service column doesn't have same high as Courier column,当您添加引导 css 时,您会看到文本不对齐。 【参考方案1】:

这可以使用label for来完成

查看以下代码并运行下面的sn-p ::

<table class="table table-responsive">
    <thead>
        <tr>
            <th>Courier</th>
            <th>Service</th>
        </tr>
    </thead>
    
    <tbody>
        <form>
            <tr>
                <td>
                    <div class="radio">
                        <label><input type="radio" id='regular' name="optradio">TIKI</label>
                    </div>
                </td>
                <td>
                    <div class="radiotext">
                        <label for='regular'>Regular Shipping</label>
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <div class="radio">
                        <label><input type="radio" id='express' name="optradio">JNE</label>
                    </div>
                </td>
                <td>
                    <div class="radiotext">
                        <label for='express'>Express Shipping</label>
                    </div>
                </td>
            </tr>
        </form>
    </tbody>
</table>

如您所见,您现在可以点击 Express Shipping 和 Regular Shipping 以根据要求选择单选按钮。

【讨论】:

谢谢你们,你们俩的合作很好:) ...它工作得很好:) 我只是想知道表单标签是否应该在表格之外。我不确定将标签放在表格中以进行正确标记是否正确,尽管我可能是错的。 @ThomasWilliams 表单标签肯定应该在 tbody 内的其他地方,但这样做不会造成任何问题。这最初是对原始问题代码的修改。如果是我的代码,我可能会将表单标签放在这个特定代码块中的表格之前。 是的,我通常这样做。谢谢,我只是想知道这是否会导致问题。【参考方案2】:

您可以使用 jQuery,这样就可以选择整个 row,而不仅仅是单独的输入或标签。见例子。

$('.table tbody tr').click(function(event) 
  if (event.target.type !== 'radio') 
    $(':radio', this).trigger('click');
  
);
.table-responsive tbody tr 
  cursor: pointer;

.table-responsive .table thead tr th 
  padding-top: 15px;
  padding-bottom: 15px;

.table-responsive .table tbody tr td 
  padding-top: 15px;
  padding-bottom: 10px;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="table-responsive">
  <table class="table table-hover">
    <thead>
      <tr>
        <th>Courier</th>
        <th>Service</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>
          <input type="radio" name="radios" id="radio1" />
          <label for="radio1">TIKI</label>
        </td>
        <td>Regular Shipping</td>
      </tr>
      <tr>
        <td>
          <input type="radio" name="radios" id="radio2" />
          <label for="radio2">JNE</label>
        </td>
        <td>Express Shipping</td>
      </tr>
    </tbody>
  </table>
</div>

【讨论】:

【参考方案3】:

使用此代码解决问题

 $('.table tbody tr td').click(function (event) 
        if (event.target.type !== 'radio') 
            $(':radio', this).trigger('click');
        
    );

【讨论】:

以上是关于表格内的单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

UITableview 内的单选按钮不起作用

如何从插入到 innerHtml 的单选按钮中获取值

无法单击跨度 Selenium Python 内的单选按钮

标签宽度问题内的单选按钮

如何以编程方式更改表格单元格中单选按钮组的单选按钮?

如何在wxPython 4.0.3中指定单选框内的单选按钮的大小