表格单选框选中YES时的边框与错误提示功能问题
解决方案:单选框选中后的行边框与错误提示修复
针对你遇到的两个问题,直接修改代码即可解决,具体说明和修改后的代码如下:
问题1:选中YES时为整行添加边框
原代码中$(this).parent().parent()仅定位到单选框所在的<td>单元格,要选中整行,需用closest('tr')找到当前单选框所在的<tr>元素,再给该行的所有<td>设置边框(直接给<tr>加边框可能因表格默认样式不生效,优先给子元素<td>设置更稳妥)。
问题2:修复选中YES时错误提示不生效的问题
原代码查找.medical_error_message的范围是当前<td>,但提示框实际在同一行的第一个<td>内,所以需要先定位到<tr>,再在该行内查找提示元素,才能准确找到对应位置的提示框。
修改后的完整代码
JavaScript 代码
// YES 单选框点击事件 $('[id^="id_0-medical_question"][id$="_0"]').click(function() { // 定位当前行 const $row = $(this).closest('tr'); // 给行内所有单元格添加边框 $row.find('td').css({ 'border': '2px solid #da4f49' }); // 在当前行内找到错误提示框并设置内容 $row.find('.medical_error_message').html('Error - you do not like this'); }); // NO 单选框点击事件 $('[id^="id_0-medical_question"][id$="_1"]').click(function() { const $row = $(this).closest('tr'); // 恢复行内所有单元格的默认样式 $row.find('td').css({ 'border': '1px solid #ddd', 'color': '#000000', 'font-weight': 'normal' }); // 清空错误提示内容 $row.find('.medical_error_message').html(''); });
HTML 代码(仅添加表格边框合并样式,其余结构不变)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <table class="table" style="border-collapse: collapse;"> <tbody> <tr> <td class="medical_question"><b>1. Do you like</b></td> <td>YES</td> <td>NO</td> </tr> <tr> <td class="medical_question"> 1. Red hair <p class="medical_error_message"></p> </td> <td><label for="id_0-medical_question1_0"><input type="radio" name="0-medical_question1" value="1" required="" id="id_0-medical_question1_0"> YES</label> </td> <td><label for="id_0-medical_question1_1"><input type="radio" name="0-medical_question1" value="0" required="" id="id_0-medical_question1_1"> NO</label> </td> </tr> <tr> <td class="medical_question"> 2. Blond hair <p class="medical_error_message"></p> </td> <td><label for="id_0-medical_question2_0"><input type="radio" name="0-medical_question2" value="1" required="" id="id_0-medical_question2_0"> YES </label> </td> <td><label for="id_0-medical_question2_1"><input type="radio" name="0-medical_question2" value="0" required="" id="id_0-medical_question2_1"> NO</label> </td> </tr> </tbody> </table>
说明:给<table>添加border-collapse: collapse;样式,确保单元格边框合并显示,让整行边框效果更连贯。
内容的提问来源于stack exchange,提问作者manafak
相关产品推荐
相关产品推荐

